Dynamic image filters for modifying a digital image over time according to a dynamic-simulation function

ABSTRACT

The present disclosure relates to systems, non-transitory computer-readable media, and methods that provide and apply dynamic image filters to modify digital images over time to simulate a dynamical system. Such dynamic image filters can modify a digital image to progress through different frames depicting visual effects mimicking natural and/or artificial qualities of a fluid, gas, chemical, cloud formation, fractal, or various physical matters or phenomena according to a dynamic-simulation function. Upon detecting a selection of a dynamic image filter, the disclosed systems can identify a dynamic-simulation function corresponding to the dynamical system. Based on selecting a portion of the (or entire) digital image at which to apply the dynamic image filter, the disclosed systems incrementally modify the digital image across time steps to simulate the dynamical system according to the dynamic-simulation function.

BACKGROUND

In recent years, image editing systems have improved filters and visualeffects for rendering digital visual media. Indeed, with advancements indigital cameras, smart computing devices, and other technology,conventional image editing systems have improved the capture, creation,artistic filtering, and rendering of digital images and videos. Forexample, some image editing systems can apply static filters to digitalimages. Static filters apply artistic effects to digital images, such asfilters that change an image to produce a Gaussian blur, a blur gallery,a liquification effect, distortion, noise, or other stylized effects.Other image editing systems can employ time-varying filters on a loop ora one-time pass, such as static clouds that move on a loop in thebackground of an image, static cartoons that move across an image, orother static content that move with time. However, these and other imageediting systems often generate predictable, cookie-cutter content thatlack the flexibility to produce more original and unique content withmore creative control. Such conventional image editing systems oftenrequire deep expertise and tedious user interactions to generate moreoriginal content. Accordingly, conventional systems continue to sufferfrom a number technical deficiencies. For example, conventional imageediting systems often (i) produce canned or rigid computer imagery usingready-made or cookie-cutter editing tools and (ii) foment excessiveamounts of user interactions required for painstaking editing togenerate original digital content with artistic editing.

BRIEF SUMMARY

This disclosure describes embodiments of systems, non-transitorycomputer-readable media, and methods that solve one or more of theforegoing problems in the art or provide other benefits describedherein. For example, the disclosed systems provide and apply dynamicimage filters to modify digital images over time to simulate a dynamicalsystem within the digital images. Such dynamic image filters can modifya digital image to progress through different frames depicting visualeffects mimicking qualities of a fluid, gas, chemical, cloud formation,fractal, or various physical matters or phenomena according to adynamic-simulation function. Upon detecting a selection of a dynamicimage filter, for instance, the disclosed systems can identify adynamic-simulation function corresponding to the dynamical system. Basedon selecting a portion of the (or entire) digital image at which toapply the dynamic image filter, the disclosed systems incrementallymodify the digital image across time steps to simulate the dynamicalsystem according to the dynamic-simulation function.

In some embodiments, the disclosed systems additionally modify thedigital image according to intuitive editing tools or user gestures. Byapplying such editing tools or gestures with dynamic image filters, thedisclosed systems can, for example, stir colors of a digital image witha brush tool or touch gesture as if the digital image were a fluid,control a speed and concentration of water vapor of a flowing cloudformation shown in a background image layer, swirl colors or shades of adigital image to mimic a smoke effect, or direct a gel-like fluid toooze and travel over a digital image over time. When a computing devicedetects a selected image frame from a series of dynamic frames changingover time, the disclosed system can also capture a modified version of adigital image as a snapshot or video of an image modulation simulating adynamical system. In this manner, the disclosed systems can flexibly andefficiently generate rich, artistic digital content with a new dynamicfilter that fosters unprecedented levels of originality.

This disclosure outlines additional features and advantages of one ormore embodiments of the present disclosure in the following description.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description provides one or more embodiments withadditional specificity and detail through the use of the accompanyingdrawings, as briefly described below.

FIG. 1 illustrates a computing system environment for implementing adynamic image-filter system in accordance with one or more embodiments.

FIG. 2 illustrates a dynamic image-filter system utilizing dynamic imagefilters to generate an initial modified image and a subsequent modifiedimage in accordance with one or more embodiments.

FIG. 3 illustrates a dynamic image-filter system modifying a digitalimage based on detecting a selection of a dynamic image filter inaccordance with one or more embodiments.

FIGS. 4A-4B illustrate a dynamic image-filter system utilizing adynamic-simulation function to update simulation values in a simulationflow field and pixel color values in accordance with one or moreembodiments.

FIGS. 5A-5C illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation of agel-like fluid in accordance with one or more embodiments.

FIGS. 6A-6C illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation ofreaction diffusion in accordance with one or more embodiments.

FIGS. 7A-7B illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation of asmoke effect in accordance with one or more embodiments.

FIG. 8 illustrates a dynamic image-filter system providing a userinterface on a computing device depicting a dynamic simulation of lightinteraction with smoke in accordance with one or more embodiments.

FIGS. 9A-9C illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation ofatmospheric cloud generation in accordance with one or more embodiments.

FIGS. 10A-10C illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation of imageblooming in accordance with one or more embodiments.

FIGS. 11A-11B illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation of aniterated function system in accordance with one or more embodiments.

FIGS. 12A-12B illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation ofcellular automata in accordance with one or more embodiments.

FIGS. 13A-13B illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation of imagerefraction in accordance with one or more embodiments.

FIGS. 14A-14B illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation using aparameterized-static-filter in accordance with one or more embodiments.

FIGS. 15A-15B illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation tomodify a mask in accordance with one or more embodiments.

FIGS. 16A-16B illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a dynamic simulation togenerate a composite image in accordance with one or more embodiments.

FIGS. 17A-17B illustrate a dynamic image-filter system providing userinterfaces on a computing device depicting a user-designated area forlimiting image modification in accordance with one or more embodiments.

FIG. 18 illustrates an example schematic diagram of a dynamicimage-filter system in accordance with one or more embodiments.

FIG. 19 illustrates a flowchart of a series of acts for dynamicallymodifying at least a portion of a digital image over time in accordancewith one or more embodiments.

FIG. 20 illustrates a block diagram of an example computing device forimplementing one or more embodiments of the present disclosure.

DETAILED DESCRIPTION

This disclosure describes one or more embodiments of a dynamicimage-filter system that provides dynamic image filters for a digitalimage and (upon selection of such a filter) modifies the digital imageaccording to a dynamic-simulation function to simulate, over time andwithin the digital image, a dynamical system. For example, uponselection of a dynamic image filter, the dynamic image-filter system cansimulate the effects or properties of gravity between objects, a fluid,smoke, fire, rain, a light ray, light refraction, an atmospheric cloud,interacting chemicals, reaction diffusion, cellular automata, aniterated function system, or an image bloom within the digital image. Bysimulating such physical phenomena or systems according to a dynamicimage filter, the dynamic image-filter system modulates some portion orall of a digital image to exhibit the same natural or artificialqualities, movement, or color scheme of the simulated physical matter orsystems.

To illustrate, in some embodiments, the dynamic image-filter systempresents a digital image along with dynamic image filters for selectionand detects a selection of a dynamic image filter to simulate adynamical system. Based on detecting the selected dynamic image filter,the dynamic image-filter system identifies a dynamic-simulation functioncorresponding to the dynamical system and generates a simulation flowfield comprising simulation values (e.g., density, velocity,temperature). The dynamic image-filter system then changes thesimulation values at spatial locations in the simulation flow field overtime in accordance with the dynamic-simulation function. For instance,the dynamic image-filter system advects or translates the simulationvalues in an amount and a direction specified by the dynamic simulationfunction at each time step in the simulation. As the simulation valueschange, in some embodiments, the dynamic image-filter systemcorrespondingly updates pixel color values in each image frame tovisually render a modified version of the digital image that reflectsthe simulation at a particular time step.

As noted above, in some embodiments, the dynamic image-filter systemidentifies at least a portion of the digital image at which to apply aselected dynamic image filter. For instance, the dynamic image-filtersystem identifies an entire image or an entire image layer at which toapply the dynamic image filter. In other embodiments, the dynamicimage-filter system identifies particular portions of a digital image(e.g., a border, coordinate, region, object, mask, and/or layer of adigital image) at which to apply the dynamic image filter. In somecases, the identified portion corresponds to a location of a user inputwithin the digital image (e.g., at a salient object portrayed within thedigital image). In other cases, the dynamic image-filter systemautomatically identifies a portion of the digital image at which toapply the dynamic image filter. Further, in some instances, the dynamicimage-filter system identifies a border region or other portion of adigital image at which to apply the dynamic image filter in response toa user selection of a specific portion or a specific filter option toimplement a dynamic image filter.

Independent of whether or how a portion or entire image is selected, insome embodiments, the dynamic image-filter system identifies adynamic-simulation function based on a selected dynamic image filter.For example, the dynamic image-filter system identifies one or morealgorithms for representing certain components or values (e.g., avelocity value, density value, temperature value) of the simulation as afunction of time. For instance, to simulate a fluid/chemicalinteraction, the dynamic image-filter system identifies an algorithm forfluid dynamics to accurately determine how a fluid velocity carriesalong or advects a chemical density.

After identifying a dynamic-simulation function for the selected dynamicimage filter, the dynamic image-filter system generates a simulationflow field comprising simulation values for a an initial time step. Insome embodiments, the simulation values are specific to values and/orparameters of the dynamic-simulation function corresponding to theselected dynamic image filter. For instance, one or more of thesimulation values can be associated with motion, growth, or otherdynamics of the simulation. Additionally or alternatively, in somecases, one or more of the simulation values can be preset values(whether default or user-selected). In other embodiments, one or more ofthe simulation values are tied to image characteristics of an imageregion (e.g., an image tonal region, an image color region, or an imageedge region).

After generating the simulation flow field and simulation values for theinitial time step, in one or more embodiments, the dynamic image-filtersystem utilizes the dynamic-simulation function to update one or more ofthe simulation values across the simulation flow field. In particularembodiments, the dynamic image-filter system utilizes thedynamic-simulation function that specifies how advection of a simulateddynamical system occurs over time (e.g., a direction and magnitude oftranslation) to determine the updated simulation values. For example, ata subsequent time step, the dynamic image-filter system updates asimulation value at a spatial location using a dynamic-simulationfunction. To illustrate, the dynamic image-filter system generates theupdated simulation value for the spatial location to comprise asimulation value translated from a neighboring spatial location at theprevious time step according to the dynamic-simulation function.

In some embodiments, as part of simulating a dynamical system, thedynamic image-filter system utilizes updated simulation values in asimulation flow field to determine updated pixel color values for eachpixel of a digital image. Such pixel color values may include an “R” orred value, a “G” or green value, and a “B” or blue value. For example,in some embodiments, the dynamic image-filter system maps updatedsimulation values to one or more pixels at each time step. Based on themappings, in some cases, the dynamic image-filter system generatesupdated pixel color values. For instance, the dynamic image-filtersystem renders updated pixel color values for the digital image tosimulate a particular dynamical system by simulating a physical effector property of a physical matter according to at least one of a densityvalue, a velocity value, or a temperature value within the simulationflow field. By generating updated pixel color values in this way, in oneor more embodiments, the dynamic image-filter system renders a digitalimage that changes at each time step to depict a live, moving scene ofthe digital image changing over time.

As further mentioned above, in certain implementations, the dynamicimage-filter system further modifies a digital image based on additionaluser inputs after selection of a dynamic image filter. For example, insome embodiments, the dynamic image-filter system alters, pauses,rewinds to, or selects one or more image frames of a digital image inresponse to a user input (e.g., a swipe gesture, tap, long-press, click,or voice-command). As an additional example, the dynamic image-filtersystem captures the one or more image frames for saving or sharing, suchas for saving in memory devices, transmitting to client devices via anelectronic communication, or uploading to a social network.

With or without additional user inputs to alter a simulation, asindicated above, the dynamic image-filter system modifies a digitalimage over time to simulate a variety of dynamical systems for naturalor artificial phenomenon. For example, in some cases, the dynamicimage-filter system applies a dynamic-simulation function simulating areaction diffusion to depict bacteria-like growth and proliferation at aborder region of a digital image. By contrast, in certainimplementations, the dynamic image-filter system applies adynamic-simulation function simulating image blooms to depict certainimage colors/tones “bleeding” or spreading across the digital image(e.g., as if the lighter colors are blooming and/or being windsweptacross the digital image). As an additional example, in certaininstances, the dynamic image-filter system applies a dynamic-simulationfunction simulating image refraction to modify (e.g., distort) a digitalimage as if viewed through a perturbed watery surface that settles orotherwise changes with time.

As mentioned above, conventional image editing systems demonstrate anumber of technical problems and shortcomings, particularly with regardto computer imagery and efficiency of implementing devices. For example,some conventional image editing systems use static filters or loopingfilters to generate artistic effects or canned animation for a digitalimage. To give an example, conventional editing systems can apply alooping filter that integrates moving clouds on a loop in the backgroundof a digital image—as if the same cloud formation repeatedly sweptacross the sky. In performing such artistic effects, conventional imageediting systems operate in a constrained fashion to execute predictableoperations on an input image. For instance, two different client devices(associated with different users) executing the same filter on the sameimage would generate a same or very similar filtered output imageutilizing a conventional image editing system. Accordingly, implementingcomputing devices of a conventional image editing system have limitedcapabilities to generate creative, original digital imagery.

To supplement the technical limits of static filters or looping filters,conventional image editing systems sometimes provide a variety of toolsthat in a graphical user interface that can be cumbersome to use toproduce more dynamic or original imagery. For example, some conventionalimage editing systems require complex combinations of user interfacetools and tedious applications of multiple adjustment layers, multiplestatic filters, multiple blending masks, etc. In addition, theseconventional image editing systems can require deep technical know-howfor creating more dynamic or original imagery. To illustrate, users needto understand and leverage various digital editing tools and navigateamong the myriad buttons and drop-down menus for such digital editingtools, etc., to create original images with unique edits mimicking aphysical effect or physical property of physical matter one image frameat a time. Even with such expertise, conventional image editing systemscan involve hundreds and sometimes thousands of digital brush strokesand navigational inputs to switch between digital tools to generate anoriginal, aesthetically appealing digital image with multiple (butdifferent) image frames. Accordingly, graphical user interfaces forconventional image editing systems require an excessive amount of userinteractions with complex editing tools to execute navigational stepsand manipulation of filtered output imagery.

In contrast, the dynamic image-filter system provides severalimprovements over conventional image editing systems. For example, thedynamic image-filter system introduces a new type of computer imageryand dynamic image editing that conventional image editing systems cannotgenerate. That is, in some case, the dynamic image-filter systemgenerates modified digital images that incorporate lifelike (e.g.,natural) or fantasy-like (e.g., artificial or unnatural) simulation ofdynamical systems as if the digital image exhibited or possessed thesame attributes of the dynamical system (e.g., effects or properties ofphysical matter). Unlike conventional image editing systems, the dynamicimage-filter system applies dynamic image filters that use particulardynamic-simulation functions and/or values in a simulation flow field tomodify a digital image over time to simulate the progression of adynamical system.

To generate this new type of computer imagery and dynamic image editing,in some embodiments, the dynamic image-filter system implements anunconventional ordered combination of steps. For example, the dynamicimage-filter system can identify one or more specific dynamic-simulationfunctions and generate a simulation flow field comprising simulationvalues. Then, at each time step of a simulation, the dynamicimage-filter system can use a dynamic-simulation function to modifypixel color values for one or more pixels of the digital image byupdating simulation values across the simulation flow field associatedwith the digital image. By implementing such an unconventional orderedcombination of steps, the dynamic image-filter system can generatebeautiful, complex digital imagery in such a way that no two results areever alike—because of the ability to capture one or more image frames ascontinuously changing according to a dynamic-simulation function.

In addition to generating new and improved computer imagery, the dynamicimage-filter system can also provide increased efficiency forimplementing computing devices. For example, the dynamic image-filtersystem provides, for display within an improved user interface, one ormore dynamic image filters for user selection. Without additional userinput or with additional but simple user inputs, the dynamicimage-filter system can generate rich, complex digital imagery bymodifying a digital image at each time step in accordance with adynamic-simulation function. Rather than the complex user interactionsand tedious edits of conventional image editing systems, the dynamicimage-filter system provides a way to automatically generate rich,complex digital imagery by a user capturing the organic progression of asimulated phenomenon at a desired time step. If additionalpersonalization is desired, the dynamic image-filter system candynamically alter the simulation as it occurs within the digital imagein response to intuitive user inputs (e.g., by further updatingsimulation values according to an additionally detected user gesture).In contrast to the disclosed system, conventional image editing systemswould require the burdensome task of directly changing pixel colorvalues (e.g., pixel-by-pixel or pixel region-by-pixel region) using acomplex library of digital tools to simulate a dynamical system acrossmultiple image frames. In this manner, the dynamic image-filter systemcan significantly reduce user interactions within a graphical userinterface to more efficiently generate creative, original digitalimagery.

As illustrated by the foregoing discussion, the present disclosureutilizes a variety of terms to describe features and benefits of thedynamic image-filter system. Additional detail is now provided regardingthe meaning of these terms. For example, as used herein, the term“dynamic image filter” refers to a software routine or algorithm that(upon application) dynamically alters a digital image or an appearanceof a digital image over time. In particular, a dynamic image filter caninclude a modification of a digital image over time to simulate adynamical system. For example, a dynamic image filter may include anexpression or visual representation that, when applied to a digitalimage, shows the digital image transforming according to a smokesimulation, a fluid simulation, a reaction diffusion simulation, etc.

As used herein, the term “dynamical system” refers to a system thatmodels an energy, force, motion, visualization, physical matter, orother thing changing over time. In some cases, a dynamical system is asystem in which a dynamic-simulation function describes time-dependenceof a point in a space (e.g., a geometric space) to simulate a behaviorof a thing (e.g., energy, physical matter) changing over time. Inparticular, a dynamical system sometimes includes a system that modelstime-varying behavior of a thing using a simulation flow field. Suchtime-varying behavior may include natural or physical behavior, on theone hand, or artificial or synthetic behavior, on the other hand. Forexample, a dynamical system may include a particular dynamical systemcorresponding to (i) a physical effect or a property of a physicalmatter, where the physical effect or property can be either follow anatural behavior or an artificially controlled behavior, or (ii) aneffect or a property of an iterated function system.

Additionally, as used herein, the term “dynamic-simulation function”refers to one or more computational models or computational algorithmsthat describe the behavior of a dynamical system. Such adynamic-simulation function can include a model or algorithm that usesvariables to represent physical effects or properties, such as motiondynamics, growth, progression, diffusion, or iteration parameters, ofphysical matter or an iterated fractal. In certain implementations, thevariables represent particular simulation values, such as densityvalues, velocity values, or temperature values corresponding to thephysical effect or property of the physical matter.

As used herein, the term “simulation value” refers to a numericalrepresentation of for part of a dynamic simulation of a dynamicalsystem. Such simulation values may represent a part of various physicaleffects or properties, such as motion dynamics, growth, progression,diffusion, or iteration parameters of physical matter, or an iteratedfractal. In particular, simulation values can include density values,velocity values, temperature values, viscosity values, vorticity values,intensity values, concentration values, rate-of-diffusion values, massvalues, opacity values, or gravitational force values. Simulation valuescan also be scalar values. In other cases, a simulation value canrepresent multiple components or higher order dimensionality (such as ahigher order tensor) in vector form. Further, a simulation value mayrepresent part of a simulation following a natural or physical patternor part of a simulation following an artificial or unnatural pattern(e.g., as set by a user).

Further, the term “simulation flow field” refers to a virtual grid orarrangement of spatial locations (e.g., sectional areas, grids, orpin-locations) associated with one or more simulation values. Forexample, a simulation flow field can include a density flow field inwhich each respective spatial location of the density flow fieldcomprises a density value. Similarly, a simulation flow field caninclude a temperature flow field in which each respective spatiallocation of the temperature flow field comprises a temperature value. Insome cases, the simulation flow field comprises a combined flow field(e.g., a combined density flow field and velocity flow field) in whicheach respective portion of the combined flow field comprises bothdensity and velocity values.

Additionally, as used herein, the term “physical matter” refers to asolid, liquid, gas, or plasma, such as any chemical or chemical compoundin various states of matter. Specific examples of physical matterinclude air, water, water vapor, clouds, smoke, periodic table elements(e.g., oxygen, mercury, gold), compounds, mixtures, solutions, or othersubstances having mass. The physical matter may likewise be (i) genericin terms of a solid object or liquid matter, (ii) specific in terms of aspecific chemical, chemical compound, such as water, steel, dirt, or(iii) a specific biological organism, such as a cell or a flower.

Further, as used herein, the term “physical effect” refers to anaturally occurring or artificially simulated energy, force, motion,visualization, or product of a real-world or synthetically createdphenomenon or physical matter. For example, a physical effect mayinclude an energy, force, a motion, visualization, or physicalconsequence of physical matter, such as a chemical, fluid, atmosphericclouds, fire, rain, smoke, etc. Such a physical effect can likewiseinclude an energy in the form of light or a force in the form of gravity(e.g., natural gravity or artificially shifted gravity).

Similarly, the term “property of a physical matter” refers tocharacteristics or qualities of one or more elements in a solid, liquid,gaseous, plasma, or other state. In particular, example properties of aphysical matter may include reactivity, flammability, acidity, heat ofcombustion, electrical conductivity, hydrophobicity, elasticity, meltingpoint, color, hardness, permeability, boiling point, saturation point,state of matter, volume, mass, viscosity, surface tension, vaporpressure, heat of vaporization, temperature, velocity, or density.

As used herein, the term “iterated function system” refers to acomputational system that uses contraction mappings to iterate theactions of a function. In particular embodiments, an iterated functionsystem includes a computational system that generates fractals—that is,a curve or geometric figure, each part of which has the same or similarstatistical character as the whole to appear self-similar at differentlevels of successive magnification. In the alternative to iteratedfunction systems, the dynamic image-filter system can use otherdynamical systems for non-physical or artificial phenomena, such asstrange attractors, L-systems, escape-time fractal systems, randomfractal systems, or finite subdivision rules.

Similarly, the term “property of an iterated function system” refers tocharacteristics or qualities of one or more computational systems thatproduce fractals. Examples of properties of an iterated function systemmay include affinity, linearity, non-linearity (e.g., for Fractalflame), a unique nonempty compact fixed set, contractiveness,non-contractiveness, etc.

As used herein, the term “digital image” refers to a collection ofdigital information that represents an image. More specifically, adigital image can include a digital file comprising pixels that eachinclude a numeric representation of a color and/or gray-level or othercharacteristics (e.g., brightness). For example, digital image file caninclude the following file extensions: JPG, TIFF, BMP, PNG, RAW, or PDF.Relatedly the term “image frame” refers to a discrete version orsnapshot of a digital image at a given time step of a simulation.Additionally, in some embodiments, the dynamic image-filter systemgenerates a “composite image,” which refers to a combination of two ormore different digital images.

In addition, the term “characteristics of a digital image” refer to oneor more settings, attributes, or parameters of a digital image. Forexample, a characteristic of a digital image may include hue,saturation, tone, color, size, pixel count, etc. Additionally, acharacteristic of a digital image may define regions (e.g., portions orsubsets of pixels) within the digital image. For instance, an “imagetonal region” refers to an area of pixels within a digital image havinga same or similar pixel level of tinting and shading or pixel level ofgray-color mixture (e.g., a same or similar saturation level).Similarly, an “image color region” refers to an area of pixels within adigital image having a same or similar hue (e.g., relative mixture ofred, green, and blue values). Further, an “image edge region” refers toan area of pixels along an outer portion (e.g., a border portion) of adigital image. Relatedly, the term “pixel color values” refers to theindividual color channel values for a given pixel (e.g., a red pixelcolor value, a green pixel color value, a blue pixel color value). Insome cases, pixel color values also include an opacity value thatindicates a degree of transparency or opaqueness of the color.

Additionally used herein, the term “absolute image pixel coordinates”refers to a set of coordinates corresponding to a global coordinatesystem that defines a pixel location among rows and columns of pixels ofa digital image. In particular embodiments, absolute image pixelcoordinates are formatted as follows: (column number, row number). Theglobal coordinate system may identify columns and rows fromleft-to-right and top-to-bottom starting with zero. However, the dynamicimage-filter system can utilize a variety of different global coordinatesystems (e.g., where the columns and/or rows start from bottom-to-top).

Further, as used herein, the term “texel coordinates” refers to alocation of a texel or texture pixel within a texture map. Inparticular, a texel coordinate can include a two-element vector withvalues ranging from zero to one. In some embodiments, the dynamicimage-filter system multiplies these values in the texel coordinates bythe resolution of a texture to obtain the location of a texel.

As used herein, the term “mask” refers to a layer or overlay that coversa portion of a digital image. In particular, a mask can include a thatselectively reveals or hides portions of the underlying digital image.In some cases, the mask can include a digital image portraying digitalobjects and/or some depiction of digital content (e.g., a color orpattern). In other cases, the mask can include a blank image with nodigital content (e.g., only whitespace). Further, in some cases, themask can include a transparent copy or image adjustment layer of thedigital image so as to preserve original content in the underlyingdigital image while allowing edits in the transparent copy. Stillfurther, in particular embodiments, a mask can refer to an imageadjustment or image adjustment layer, such as Adobe Photoshop'sbrightness/contrast, levels, curves, exposure, vibrance, hue/saturation,color balance, black and white, photo filter, channel mixer, colorlookup, posterize, threshold, gradient map, selective color,shadows/highlights, HDR toning, match color, replace color, etc.

In addition, as used herein, the term “parameterized-static filter”refers to a software routine or algorithm that (upon application) altersa digital image or an appearance of a digital image in a static imageframe. In particular embodiments, a parameterized-static filter alters adigital image in a singular (one-time) instance upon application.Examples of a parameterized-static-filter include Photoshop's Gaussianblur, blur gallery, liquify, pixelate, distort, noise, render, stylizedfilters, neural filters, neural style filters, lens correction, oilpaint, high pass, find edges, sharpen, vanishing point, motion blur,exposure, shadows, highlights, curves, levels, saturation, vibrance,dodging, burning, camera raw filters, etc. In one or more embodiments,the dynamic image-filter system uses a dynamic-simulation function tolocally drive various parameters of a parameterized-static-filter tocreate a dynamic version (e.g., a live and interactive version) of theparameterized-static-filter.

Additional detail will now be provided in relation to illustrativefigures portraying example embodiments and implementations of thedynamic image-filter system. For example, FIG. 1 illustrates a computingsystem environment (or “environment”) 100 for implementing a dynamicimage-filter system 110 in accordance with one or more embodiments. Asshown in FIG. 1, the environment 100 includes server(s) 102, a clientdevice 106, and a network 112. In one or more embodiments, each of thecomponents of the environment 100 communicate (or are at leastconfigured to communicate) via the network 112. Example networks arediscussed in more detail below in relation to FIG. 20.

As shown in FIG. 1, the environment 100 includes the client device 106.The client device 106 includes one of a variety of computing devices,including a smartphone, tablet, smart television, desktop computer,laptop computer, virtual reality device, augmented reality device, orother computing device as described in relation to FIG. 20. AlthoughFIG. 1 illustrates a single client device 106, in some embodiments, theenvironment 100 includes multiple client devices. In these or otherembodiments, the client device 106 communicates with the server(s) 102via the network 112. For example, the client device 106 receives userinput and provides to the server(s) 102 information pertaining to theuser input (e.g., image filters or image modifications that relate tointeractively altering a dynamic simulation of a dynamical system).

As shown, the client device 106 includes a corresponding clientapplication 108. In particular embodiments, the client application 108comprises a web application, a native application installed on theclient device 106 (e.g., a mobile application, a desktop application,etc.), or a cloud-based application where part of the functionality isperformed by the server(s) 102. In some embodiments, the clientapplication 108 presents or displays information to a user associatedwith the client device 106, including modified versions of a digitalimage over time. For example, the client application 108 identifies auser input via a user interface of the client device 106 to select adynamic image filter. Subsequently, in some embodiments, the clientapplication 108 causes the client device 106 to generate, store,receive, transmit, and/or execute electronic data using a graphicalprocessing unit (“GPU”), such as executable instructions for identifyinga dynamic-simulation function and modifying a digital image according tothe dynamic-simulation function.

For example, the client application 108 can include the dynamicimage-filter system 110 as instructions executable on a GPU. Byexecuting the dynamic image-filter system 110 as instructions on a GPU,for instance, the client device 106 identifies a dynamic-simulationfunction corresponding to the dynamical system. As a further example, byexecuting the dynamic image-filter system 110 as instructions on a GPU,the client device 106 can dynamically modify, within a graphical userinterface, at least a portion of the digital image over time to simulatethe dynamical system within the digital image according to thedynamic-simulation function. These and other aspects of the clientapplication 108 implementing the dynamic image-filter system 110 aredescribed in more detail below in relation to the subsequent figures.

As further illustrated in FIG. 1, the environment 100 includes theserver(s) 102. In some embodiments, the server(s) 102 comprises acontent server and/or a data collection server. Additionally oralternatively, the server(s) 102 comprise an application server, acommunication server, a web-hosting server, a social networking server,or a digital content management server.

Moreover, as shown in FIG. 1, the server(s) 102 implement a digitalcontent management system 104 that manages digital files (e.g., digitalimages for object segmentation). For example, in one or moreembodiments, the digital content management system 104 receives,transmits, organizes, stores, updates, and/or recommends digital imagesto/from the client device 106. For instance, in certain implementations,the digital content management system 104 comprises a data store ofdigital images from which the client device 106 selects a digital imageto apply one or more dynamic image filters via the client application108.

Although FIG. 1 depicts the dynamic image-filter system 110 located onthe client device 106, in some embodiments, the dynamic image-filtersystem 110 is implemented by one or more other components of theenvironment 100 (e.g., by being located entirely or in part at one ormore of the other components). For example, in one or more embodiments,the server(s) 102 and/or a third-party device implement the dynamicimage-filter system 110.

In some embodiments, though not illustrated in FIG. 1, the environment100 has a different arrangement of components and/or has a differentnumber or set of components altogether. For example, in certainembodiments, the environment 100 includes a third-party server (e.g.,for storing digital images or other data). As another example, theclient device 106 communicates directly with the server(s) 102,bypassing the network 112.

As mentioned above, the dynamic image-filter system 110 can utilizedynamic image filters to modify a digital image over time. For example,the dynamic image-filter system 110 generates a discrete version of adigital image at each time step during a simulation. FIG. 2 illustratesthe dynamic image-filter system 110 utilizing dynamic image filters 204to generate an initial modified image 206 and a subsequent modifiedimage 208 in accordance with one or more embodiments.

As shown in FIG. 2, the dynamic image-filter system 110 uses the dynamicimage filters 204 to modify a digital image 202 (e.g., an input imageaccessed from a memory device or data store). In particular, FIG. 2depicts the dynamic image-filter system 110 utilizing a single dynamicimage filter from the dynamic image filters 204 to modify the digitalimage 202. Although not shown, in certain embodiments, the dynamicimage-filter system 110 utilizes a combination of dynamic image filtersfrom the dynamic image filters 204 to modify the digital image 202.

As described in more detail below, in certain implementations, thedynamic image filters 204 appear as selectable options that comprisesoftware routines or algorithms for modifying the digital image 202 bysimulating, within the digital image 202, a dynamical system. Forexample, in response to detecting a user selection of a specific dynamicimage filter (e.g., a “track streams filter” or “fluid mixture filter”),the dynamic image-filter system 110 begins to modify the digital image202 accordingly. As depicted in FIG. 2, for instance, the dynamicimage-filter system 110 modifies the digital image 202 in a progressivefashion so as to imitate the properties of a fluid that exhibitsstream-like or fluid-mixing behavior.

To illustrate, at an initial time step (time t₁), FIG. 2 shows thedynamic image-filter system 110 modifying the digital image 202 along animage border (or image-edge regions) to generate the initial modifiedimage 206. Then, by continually modifying the digital image 202 througha subsequent time step (time t_(n)), the dynamic image-filter system 110generates the subsequent modified image 208. Because of the progressionof the simulation, the dynamic image-filter system 110 renders thesubsequent modified image 208 with a more advanced stage of fluidmixture within the digital image 202 as compared to the initial modifiedimage 206. Thus, depending on the desired effect, the subsequentmodified image 208 may comprise additional artistic blurring andabstraction of the digital image 202 compared to the initial modifiedimage 206. In this manner, the dynamic image-filter system 110 candynamically generate rich, diverse computer imagery using the dynamicimage filters 204 as explained further below.

As just discussed, the dynamic image-filter system 110 can use dynamicimage filters to generate modified versions of an input image over time.In these or other embodiments, the dynamic image filters correspond tospecific dynamic-simulation functions that uniquely model a dynamicalsystem. Thus, in selecting a dynamic image filter, in one or moreembodiments, the dynamic image-filter system 110 identifies acorresponding dynamic-simulation function to simulate a dynamical systemwithin a digital image. Additionally, in some cases, the dynamicimage-filter system 110 detects one or more additional user inputs(e.g., for applying image filters or image modifications that alter thesimulation or for capturing a particular image frame of a modifieddigital image during the simulation).

FIG. 3 illustrates the dynamic image-filter system 110 modifying thedigital image 202 to simulate a dynamical system in accordance with oneor more embodiments. As shown in act 302 of FIG. 3, the dynamicimage-filter system 110 presents dynamic image filters for userselection (e.g., within a user interface of a client device). In one ormore embodiments, the dynamic image filters appear as selectable optionsthat comprise software routines or algorithms for modifying the digitalimage 202 by simulating, within the digital image 202, a particulardynamical system corresponding to a physical effect or property of aphysical matter or iterated function system. As shown in FIG. 3,examples of such physical matter include fluid, smoke, fire, rain,atmospheric clouds, and interacting chemicals. As further shown in FIG.3, examples of a physical effect or property include gravity, light ray,light refraction, image bloom, reaction diffusion, and cellularautomata. Myriad other particular dynamical systems, such as iteratedfunction systems, are within the scope of the present disclosure.

At act 304, the dynamic image-filter system 110 detects a user input toselect one of the dynamic image filters presented for display. Forexample, the dynamic image-filter system 110 identifies, via a userinterface, one or more clicks, haptic inputs, voice commands, touchgestures, etc. that indicate a user selection of a dynamic image filter.

At act 306, the dynamic image-filter system 110 identifies adynamic-simulation function based on the user input. In particularembodiments, the dynamic image-filter system 110 identifies adynamic-simulation function that corresponds to the selected dynamicimage filter. For example, in response to detecting the user input atact 304, the dynamic image-filter system 110 retrievescomputer-executable instructions (e.g., from one or more memory devicesaccessible via the client device) comprising the algorithms orcomputational models that form the dynamic-simulation function forsimulating a dynamical system. The various dynamic-simulation functionsare described in greater detail below in relation to FIGS. 5A-17B.

At act 307, the dynamic image-filter system 110 optionally identifies aportion of the digital image 202 at which to apply a selected dynamicimage filter. For example, as shown in FIG. 3, the dynamic image-filtersystem 110 identifies edges of graphical objects (e.g., edges of theleaves and flower petals in the digital image 202) to initially simulatea smoke-like effect within the digital image 202. Alternatively, in someembodiments, the dynamic image-filter system 110 identifies a border,coordinate, or region of the digital image 202 at which to apply thedynamic image filter.

In some cases, the dynamic image-filter system 110 automaticallyidentifies a portion of the digital image 202 at which to apply thedynamic image filter based on the selected dynamic image filter and/orselected image layer. For example, the dynamic image-filter system 110performs object selection within the digital image 202, boundarydetection, etc. As shown in FIG. 3, the dynamic image-filter system 110automatically identifies the edges of the leaves and flower petals asthe particular sources for emitting smoke according to a selected smokefilter. In other examples, the dynamic image-filter system 110automatically identifies a border region at which to apply the dynamicimage filter in response to a user selection of a border layer or aspecific filter option to implement a dynamic image filter only at aborder region.

The act 307 can also comprise the dynamic image-filter system 110utilizing a different approach to identifying a portion of the digitalimage 202 at which to apply the selected dynamic image filter. Forexample, in some embodiments, the dynamic image-filter system 110identifies a portion of the digital image 202 that corresponds to alocation of a user input within the digital image 202 (e.g., a specificflower tapped or brush-stroked by a user). By contrast, in otherembodiments, the dynamic image-filter system 110 identifies an entiretyof the digital image 202 (or an entire image layer) at which to applythe dynamic image filter. For example, in some embodiments, the dynamicimage-filter system 110 identifies a foreground or background layer toapply the dynamic image filter in response to detecting a user selectionof the foreground or background layer prior to or during activation of adynamic image filter.

At act 308, the dynamic image-filter system 110 dynamically modifies thedigital image 202 over time to simulate a dynamical system. For example,as shown in the initial modified image 206 and the subsequent modifiedimage 208, the dynamic image-filter system 110 continuously modifies thedigital image 202 such that each successive image frame is differentfrom the previous image frame according to the selecteddynamic-simulation function. In some cases, the dynamic image-filtersystem 110 modifies a determined or selected portion of the digitalimage 202 according to the selected dynamic image filter and/oraccording to user input identifying specific location(s) at which toapply the selected dynamic image filter.

To illustrate, the dynamic image-filter system 110 determines simulationvalues corresponding to the dynamical system utilizing thedynamic-simulation function. For instance, the simulation values includeat least one of density values, velocity values, temperature values,viscosity values, vorticity values, intensity values, concentrationvalues, or rate-of-diffusion values according to the dynamic-simulationfunction.

In these or other embodiments, the dynamic image-filter system 110changes the simulation values with each time step according to thedynamic-simulation function. Moreover, at a given time step, the dynamicimage-filter system 110 modifies the digital image 202 by renderingupdated pixel color values for the digital image 202 to simulate thedynamical system according to updated simulation values. Additionaldetails regarding how the dynamic image-filter system 110 modifies thedigital image 202 using the dynamic-simulation function are describedmore below in relation to FIGS. 4A-4B.

As further shown in FIG. 3, at an optional act 310, the dynamicimage-filter system 110 detects additional user input. In someembodiments, the additional user input represents one or more userinteractions for applying an image filter or an image modification thatalters a digital image during the simulation of a dynamical system. Suchadditional user input can include intuitive user gestures and a varietyof types of haptic inputs, such as swipes, taps, or long-presses. Inother cases, the additional user input comprises one or more userinteractions that move or change an orientation of a computing device(e.g., tilting, shaking, pointing, or orienting of a client device).Regardless of the type of additional user input, in certainimplementations, the dynamic image-filter system 110 initial renders,for an initial time step, pixel color values for the digital image 202to simulate a dynamical system within the digital image 202 according tosimulation values within a simulation flow field—based on an identifieddynamic-simulation function. Based on detecting an additional user inputto apply an image filter or an image modification to the digital image202, the dynamic image-filter system 110 renders, for a subsequent timestep, adjusted pixel color values for the digital image 202 to depictthe digital image with the image filter or the image modification whilesimulating the dynamical system within the digital image 202.

As further suggested above, in some cases, the additional user inputincludes one or more user interactions that influence simulation values(e.g., increase wind speed, decrease a chemical concentration, changefluid flow direction). By changing one or more parameters of thesimulation, in one or more embodiments, the dynamic image-filter system110 alter pixel color values to provide a corresponding visual effectwithin the digital image 202 (e.g., stirring up a fluid, increasingcloud generation, refracting more light).

Additionally or alternatively, in some embodiments, the additional userinput corresponds to other interactive options available to a user. Forexample, based on detecting the additional user input, the dynamicimage-filter system 110 may pause or freeze the simulation (e.g., bytapping or holding a pause button). In some cases, pausing thesimulation includes stopping execution of a dynamic-simulation function.Additionally or alternatively, pausing the simulation includes settingone or more simulation values to zero (e.g., setting velocity to zerosuch that movement stops). In these or other embodiments, the dynamicimage-filter system 110 resumes the simulation (e.g., in responsedetecting a release or an additional tap of the pause button or a playbutton). For instance, the dynamic image-filter system 110 resumesexecution of the dynamic-simulation function and/or or resets one ormore simulation values.

Similarly, in some embodiments, the dynamic image-filter system 110speeds up or slows down the simulation in response to detectingadditional user input. For example, the dynamic image-filter system 110expedites or slows down the simulation within the digital image 202based on detecting adjustment of a simulation-speed slider via a userinterface. In these or other embodiments, the dynamic image-filtersystem 110 varies one or more of the simulation values in response todetecting the additional user input (e.g., to view a more rapidprogression of the simulation or to view a slower progression of thesimulation).

In another example, the dynamic image-filter system 110 rewinds thesimulation in response to detecting the additional user input. Forexample, the dynamic image-filter system 110 reverses the simulationwithin the digital image 202 based on detecting user interaction with arewind button or a slider element in a user interface. In these or otherembodiments, the dynamic image-filter system 110 rewinds the simulationby visually displaying playback (e.g., a recorded version) of thesimulation depicted within the digital image 202 in reverse. In otherembodiments, the dynamic image-filter system 110 rewinds the simulationby accessing from memory the previous simulation values for one or moreprevious time steps (or intervals of time steps). Subsequently, incertain implementations, the dynamic image-filter system 110 renderspixel color values based on the previous simulation values in abackwards, sequential progression of time steps. Still, in otherembodiments, the dynamic image-filter system 110 rewinds the simulationby adjusting the dynamic-simulation function (e.g., adjusting a positiveacceleration to a negative acceleration).

In yet another example, the dynamic image-filter system 110 bookmarks orselects one or more image frames of the digital image 202 (e.g., theinitial modified image 206 and/or the subsequent modified image 208) inresponse to detecting the additional user input. For example, a user mayselect one or more image frames of potential interest by interactingwith a highlight user interface element. After selecting the one or moreimage frames, in one or more embodiments, the dynamic image-filtersystem 110 continues with the simulation.

Additionally or alternatively, in some cases, the dynamic image-filtersystem 110 returns to the selected portion based on a user interactionvia a return user interface element. After returning to the one or moreselected image frames, the dynamic image-filter system 110 optionallypresents selectable options to save at least one of the one or moreselected image frames and/or begin a new simulation. In response to auser selection to save an image frame, the dynamic image-filter system110 optionally stores the image frame in one or more memory devices foraccess by the client device. In response to a user selection to begin anew simulation, in certain implementations, the dynamic image-filtersystem 110 presents selectable options to select one or more additionalor alternative dynamic image filters to apply starting with the selectedimage frame. In certain embodiments, the dynamic image-filter system 110presents an option to leave or cancel the selected image frame andreturn to the original version of the digital image 202 to applyadditional or alternative dynamic image filters.

Similar to selecting an image frame, in one or more embodiments, thedynamic image-filter system 110 captures (e.g., save) one or more imageframes based on detecting the additional user input. For example, as thedigital image 202 changes with time according to the simulation, thedynamic image-filter system 110 stores a particular image frame inresponse to detecting a user interaction with a screenshot or “saveimage frame” user interface element. In particular embodiments, thedynamic image-filter system 110 stores the captured image frame in oneor more memory devices on the client device 106 and/or at the digitalcontent management system 104. In additional or alternative embodiments,the dynamic image-filter system 110 transmits the captured image frameto one or more other client devices or uploads the captured image frameto a social network.

As briefly mentioned above, the dynamic image-filter system 110 canutilize a dynamic-simulation function to update simulation values acrosstime to simulate a dynamical system. FIGS. 4A-4B illustrate the dynamicimage-filter system 110 utilizing a dynamic-simulation function 408corresponding to a selected dynamic image filter to update simulationvalues and corresponding pixel color values in accordance with one ormore embodiments. As shown in FIG. 4A, the dynamic image-filter system110 generates or populates a simulation flow field 402 comprisingsimulation values 404 a at spatial locations 406 associated with theinitial modified image 206. In particular, FIG. 4A shows the dynamicimage-filter system 110 generating the simulation values 404 a ascomprising V₁-V₄₅ for the spatial locations 406 for time t₁ of thesimulation.

For example, for time t₁ of the simulation, the dynamic image-filtersystem 110 determines the simulation values 404 a comprises at least oneof density values, velocity values, temperature values, viscosityvalues, vorticity values, intensity values, concentration values, orrate-of-diffusion values corresponding to the dynamical system. That is,in some embodiments, the dynamic image-filter system 110 generates thesimulation values 404 a based on the dynamic-simulation functioncorresponding to the selected dynamic image filter. For instance, thedynamic-simulation function may include a density component for whichthe dynamic image-filter system 110 determines a density value.Additionally or alternatively, the dynamic image-filter system 110determines other simulation values (e.g., velocity values) depending onthe component(s) of the dynamic-simulation function.

In certain embodiments, the dynamic image-filter system 110 generatesthe simulation values 404 a based on predetermined values. For example,in some cases, each dynamic-simulation function corresponding to adynamic image filter includes one or more simulation values comprisingdefault values or preset-optimized (or learned) values for beginning asimulation. As another example, the dynamic image-filter system 110generates the simulation values 404 a based on user preferences and/oruser settings (e.g., custom settings for one or more dynamic imagefilters). In yet another example, the dynamic image-filter system 110generates the simulation values 404 a (and/or simulation values atsubsequent time steps) utilizing a random number generator (e.g., to addrandomness at a variety of spatial locations).

Additionally or alternatively, in some embodiments, the dynamicimage-filter system 110 generates the simulation values 404 a based onimage characteristics. For example, in certain embodiments, the dynamicimage-filter system 110 generates particular velocity values for regions(e.g., image color regions) of the initial modified image 206corresponding to certain pixel color values. As another example, thedynamic image-filter system 110 generates particular temperature valuesfor regions (e.g., image tonal regions) of the initial modified image206 that fall within a threshold tonal level. In yet another example,the dynamic image-filter system 110 generates particular density valuesfor regions (e.g., image edge regions) of the initial modified image 206to prominently depict a simulated effect occurring at image edges.

Subsequently, for time t₂, FIG. 4A shows the dynamic image-filter system110 generates updated simulation values 404 b as comprising V′₁-V′₄₅according to the dynamic-simulation function 408. That is, at each ofthe spatial locations 406, the dynamic image-filter system 110 appliesthe dynamic-simulation function 408 to determine the updated simulationvalues 404 b. In some embodiments, the dynamic image-filter system 110generates a different simulation value at each of the spatial locations406 by applying the dynamic-simulation function 408. By contrast, insome embodiments, the dynamic image-filter system 110 generates adifferent simulation value at selected spatial locations of the spatiallocations 406 when applying the dynamic-simulation function 408 totarget a determined or selected portion of a digital image.

As an illustration of the latter situation, in some cases, the dynamicimage-filter system 110 generates a same simulation value for at leastone of the spatial locations 406 by applying the dynamic-simulationfunction 408. For example, the dynamic image-filter system 110determines the updated simulation value for a spatial location remainsunchanged from time t₁ to time t₂ by applying the dynamic-simulationfunction 408 to update a simulation value of zero (or other value). Asanother example (described more below in relation to FIG. 4B), thedynamic image-filter system 110 advects or transfers (at time t₂) asimulation value from a spatial location to a neighboring spatiallocation that was previously associated (at time t₁) with a same initialsimulation value. Thus, in some embodiments, one or more of the spatiallocations 406 may correspond to a same simulation value for one or moretime steps.

Moreover, at time t₂, the dynamic image-filter system 110 simulates thedynamical system by modifying the initial modified image 206 to generatethe subsequent modified image 208. To generate the subsequent modifiedimage 208, the dynamic image-filter system 110 updates and renders pixelcolor values based on the updated simulation values 404 b (e.g., asdescribed below in relation to FIG. 4B).

Indeed, as shown in FIG. 4B, the spatial locations 406 correspond or mapto one or more pixels 410. In some embodiments, the mapping is not adirect correspondence of spatial location to pixel, but rather a roughor approximate correspondence between a spatial location and one or morepixels. For example, as shown in FIG. 4B, each of the spatial locations406 corresponds to four pixels of the pixels 410. In additionalembodiments, however, the spatial locations correspond to a differentnumber of pixels. By contrast, in certain implementations, the mappingbetween spatial location and pixel is 1:1 such that each of the spatiallocations corresponds to an individual pixel of the pixels. In certainembodiments, the dynamic image-filter system 110 improves a simulationruntime or rendering speed of the implementing computing device byutilizing the simulation flow field 402 with a lower resolution comparedto the digital image 202. For instance, a lower resolution simulationflow field may include far fewer spatial locations than pixels of thedigital image.

As additionally shown in FIG. 4B, each of the pixels 410 comprise pixelcolor values (e.g., red, green, and blue color values). In particularembodiments, the dynamic image-filter system 110 renders pixel colorvalues for the pixels 410 at each time step based on the correspondingsimulation values within the simulation flow field 402. For example, attime t₁, the dynamic image-filter system 110 renders pixel color values412 a to visually display the initial modified image 206 within agraphical user interface based on the simulation values at spatiallocations 406 a and 406 b. Similarly, at time t₂, the dynamicimage-filter system 110 renders pixel color values 412 b to visuallydisplay the subsequent modified image 208 within the graphical userinterface based on updated simulation values at spatial locations 406 aand 406 b.

As just suggested, to determine the pixel color values of the pixels 410at each subsequent image frame during the simulation, in someembodiments, the dynamic image-filter system 110 uses simulation valuesaccording to the dynamic-simulation function 408. For example, as shownin FIG. 4B, the dynamic image-filter system 110 uses a simulation valueV₃₇ as a basis to generate the pixel color values P₁₅₇, P₁₅₈, P₁₄₄ andP₁₄₃. Additionally, the dynamic image-filter system 110 uses asimulation value V₃₄ as a basis to generate the pixel color values P₁₃₇,P₁₃₈, P₁₂₄ and P₁₂₃. Subsequently, at time t₂, the dynamic image-filtersystem 110 uses an updated simulation value V′₃₇ as a basis to updatethe pixel color values P₁₅₇, P₁₅₈, P₁₄₄ and P₁₄₃ to be P′₁₅₇, P′₁₅₈,P′₁₄₄, and P′₁₄₃. Similarly, the dynamic image-filter system 110 uses anupdated simulation value V′₃₄ as a basis to update the pixel colorvalues P₁₃₇, P₁₃₈, P₁₂₄ and P₁₂₃ to be P′₁₃₇, P′₁₃₈, P′₁₂₄, and P′₁₂₃.

To further illustrate, take for example a case where thedynamic-simulation function 408 effectively advects or translates thesimulation value V₃₇ from a spatial location 406 a to a neighboringspatial location 406 b over the following time step: time t₁-time t₂. Inthis example, the spatial location 406 a at time t₁ comprises asimulation value V₃₇ and corresponds to pixels with pixel color values412 a of P₁₅₇, P₁₅₈, P₁₄₄, and P₁₄₃. In particular embodiments, thedynamic image-filter system 110 associates the simulation value V₃₇ withthe arrangement of pixel color values P₁₅₇, P₁₅₈, P₁₄₄, and P₁₄₃.

Subsequently, by applying the dynamic-simulation function 408 togenerate simulation values for the spatial locations 406, the dynamicimage-filter system 110 translates the simulation value V₃₇ from thespatial location 406 a to the neighboring spatial location 406 b at timet₂. Accordingly, the dynamic image-filter system 110 also translates thepixel color values 412 a that are associated with the simulation valueV₃₇ (in this case, P₁₅₇, P₁₅₈, P₁₄₄, and P₁₄₃) from pixels thatcorrespond to the spatial location 406 a to the pixels that correspondto the neighboring spatial location 406 b. In other words, the pixelcolor values P₁₅₇, P₁₅₈, P₁₄₄, and P₁₄₃ shift down 2 pixels over thetime step: time t₁-time t₂. Thus, the updated pixel color values 412 bof P′₁₃₇, P′₁₃₈, P′₁₂₄, and P′₁₂₃ equal the pixel color values P₁₅₇,P₁₅₈, P₁₄₄, and P₁₄₃ from the pixel color values 412 a.

Although the foregoing example illustrates one instance of advectionaccording to the dynamic-simulation function 408, the present disclosurecovers other embodiments in which the dynamic image-filter system 110implements other methods of advection. Indeed, in some embodiments, thedynamic image-filter system 110 executes the dynamic-simulation function408 to advect simulation values (and therefore pixel color values) invarious directions, distances, and/or amounts. For example, in certainembodiments, the dynamic image-filter system 110 weights therelationship between simulation values and pixel color values. Forinstance, upon advecting a given simulation value, the dynamicimage-filter system 110 correspondingly advects pixel color values in aweighted fashion (e.g., dissipating fashion). In this example, thedynamic image-filter system 110 advects pixel color values such thatpixel color values change or transition when advected (e.g., to fade,change hue, decrease saturation). As another example, the dynamicimage-filter system 110 executes the dynamic-simulation function 408 toadvect simulation values in a variety of ways (e.g., linearly,non-linearly, or randomly).

As noted above, in some embodiments, the dynamic image-filter system 110utilizes additional or alternative methods to dynamically modify atleast a portion of the digital image 202 over time. In particularembodiments, the dynamic image-filter system 110 modifies some portionsof the digital image 202 but not other portions of the digital image 202at any given time step. In some cases, these modifications are inaccordance with the dynamic-simulation function 408 for particularspatial locations corresponding to determined or selected portions of adigital image. In other cases, these modifications override thedynamic-simulation function 408 (e.g., by preventing execution of thedynamic-simulation function 408 at certain spatial locations and/or byperforming subsequent updates to simulation values).

To illustrate, in some embodiments, the dynamic image-filter system 110modifies the digital image 202 based on image characteristics at certainregions of the digital image 202 (e.g., an image tonal region, an imagecolor region, or an image edge region). For instance, in certainimplementations, the dynamic image-filter system 110 modifies onlyportions of the digital image 202 corresponding to a border portionaround the digital image 202 by locking simulation values at spatiallocations inside the border portion. As another example (and as shown inFIG. 2 for instance), the dynamic image-filter system 110 beginsmodification at certain portions (e.g., at edges of graphical objectsdepicted within the digital image) and proceeds outwardly. Similarly, insome embodiments, the dynamic image-filter system 110 emphasizes orweights advection of brighter colors over darker colors (or vice-versa).

As further noted above, in some embodiments, the dynamic image-filtersystem 110 modifies portions of the digital image 202 based on locationdata. Such location data may include initially determined or initiallyselected portions of a digital image and correspond to particularspatial locations within the simulation flow field 402. For example, incertain implementations, the dynamic image-filter system 110 modifiesportions of the digital image 202 based on absolute image pixelcoordinates corresponding to initially selected and neighboring regionsof the digital image 202. To illustrate, the dynamic image-filter system110 modifies portions of the digital image 202 corresponding to a rangeor set of absolute image pixel coordinates (e.g., that identify an imagequadrant, form a shape within the digital image 202, or comprise adigital object portrayed within the digital image 202). In anotherexample, the dynamic image-filter system 110 modifies portions of thedigital image 202 corresponding to a range or set of texel coordinates(e.g., to map one or more texels in a texture map to a three-dimensionaldigital object portrayed in the digital image 202).

Further, in some embodiments, the dynamic image-filter system 110modifies portions of the digital image 202 based on additional userinput. To illustrate, the dynamic image-filter system 110 additionallymodifies a local region within the digital image 202 in response to anadditional user input (e.g., a haptic swipe interaction) to apply animage filter or an image modification that alters the local simulationvalues of spatial locations corresponding to the user input. Forinstance, in certain implementations, the dynamic image-filter system110 increases a local temperature to increase local cloud generation inresponse to an additional user input. Similarly, in certain embodiments,the dynamic image-filter system 110 limits modifications touser-designated portions of the digital image 202 based on additionaluser input. To illustrate, the dynamic image-filter system 110 freezesor locks simulation values at spatial locations outside or inside of auser-designated area (e.g., a resist-area over a human face to preventmodification of facial features portrayed in the digital image 202).

In some embodiments, the spatial locations 406 are arranged in differentconfigurations than the arrangement illustrated in FIGS. 4A-4B. Forexample, the spatial locations 406 may not be arranged in a grid-likefashion. Rather, the spatial locations 406 may be arranged in a circularpattern, a random pattern, or a staggered block configuration.Additionally or alternatively, the spatial locations 406 may includemore or fewer spatial locations, other sizes, shapes, etc. Similarly, inother embodiments, the spatial locations 406 map to more or fewer pixelsthan illustrated in FIG. 4B.

Although the above provides one example of advection of simulationvalues, other embodiments of the dynamic image-filter system 110 includeadvection of simulation values between differently positionedneighboring spatial locations. For example, neighboring spatiallocations may include adjacent neighboring spatial locations andnon-adjacent spatial locations. Accordingly, in certain embodiments, oneor more spatial locations are positioned between a spatial location anda non-adjacent neighboring spatial location (e.g., that is positioned uptwo spatial locations and over three spatial locations). When advectingbetween non-adjacent neighboring spatial locations, the dynamicimage-filter system 110 may translate simulation values in a same orsimilar manner as described above. However, in certain cases, thedynamic-simulation function includes a greater magnitude of advection to“jump” to a non-adjacent neighboring spatial location. Additionally oralternatively, the dynamic-simulation function dictates more complex(e.g., non-linear, erratic) translation of simulation values because thedynamic-simulation function itself is, for instance, non-linear.

In addition (or in the alternative to) embodiments involving a singledigital image modified by the dynamic image-filter system 110, in someembodiments, the digital image 202 comprises a series of digital images(e.g., a video file). In a video file for instance, pixel color valueschange from image frame to image frame. Accordingly, in someembodiments, the dynamic image-filter system 110 updates simulationvalues and correspondingly updates pixel color values of an instantimage frame in a manner that accounts for the pixel color values of anext image frame. In this manner, the dynamic image-filter system 110can blend simulated effects between image frames in a video.

Although not shown in FIGS. 4A-4B, in some embodiments, the dynamicimage-filter system 110 performs similar acts as described above at timeto prior to modifying the digital image 202. For example, in certainimplementations, the dynamic image-filter system 110 generates initialsimulation values at time to based on the dynamic-simulation function asdescribed above. Additionally or alternatively, in some embodiments, thedynamic image-filter system 110 generates the initial simulation valuesat time to based on image characteristics (e.g., the pixel color valuesof the digital image 202). Then, at time t₁, the dynamic image-filtersystem 110 generates the initial modified image 206 based on thetranslation (or delta) of simulation values by updating the initialsimulation values at time to t₀ be the simulation values 404 a at timet₁. In other embodiments, the dynamic image-filter system 110 generatesinitial simulation values at time to as placeholders, at least some ofwhich the dynamic image-filter system 110 may not use to generate theinitial modified image 206 at time t₁.

As mentioned above, the dynamic image-filter system 110 can present, fordisplay within a graphical user interface, a digital image and a set ofdynamic image filters for user selection. Based on detecting a userinput to select a dynamic image filter, the dynamic image-filter system110 dynamically modify the digital image within the graphical userinterface over time to simulate a dynamical system. FIGS. 5A-5C, FIGS.6A-6C, FIGS. 7A-7B, FIG. 8, FIGS. 9A-9C, FIGS. 10A-10C, FIGS. 11A-11B,FIGS. 12A-12C, FIGS. 13A-13B, FIGS. 14A-14B, FIGS. 15A-15B, FIGS.16A-16B, and FIGS. 17A-17B illustrate computing devices 500-1700presenting graphical user interfaces relating to a dynamic simulation tomodify a digital image in accordance with one or more embodiments.

In these or other embodiments, the computing devices 500-1700 comprise aclient application 108. In some embodiments, the client applicationcomprises computer-executable instructions that (upon execution) causethe computing devices 500-1700 to perform certain actions depicted inthe corresponding figures, such as presenting a graphical user interfaceof the client application. In particular embodiments, the clientapplication causes GPUs of the computing devices 500-1700 to performspecific acts (including those discussed above in relation to FIGS.4A-4B) for modifying pixel color values at each time step in thesimulation and rendering a corresponding image. Rather than refer to theclient application or the dynamic image-filter system 110 as performingthe actions depicted in the figures below, this disclosure willgenerally refer to the computing devices 500-1700 performing suchactions for simplicity.

As indicated above, in one or more embodiments, the dynamic image-filtersystem 110 modifies a digital image over time according to a dynamicimage filter by simulating a fluid and/or a chemical. FIGS. 5A-5Cillustrate a particular example of simulating a gel-like fluid bydepicting a viscous, liquid nature of the gel-like fluid via changingripples and swirls as the simulation progresses. In FIG. 5A, thecomputing device 500 displays a graphical user interface 502 acomprising a digital image 504, dynamic image filters 506, and dynamicfilter variations 507. As described in relation to the foregoingfigures, some of the dynamic image filters 506 appear as selectableoptions that trigger software routines or algorithms for modifying thedigital image 202 by simulating, within the digital image 202, adynamical system.

Examples of some particular dynamical systems correspond to physicalmatter, such as fluid, smoke, fire, rain, atmospheric clouds, andinteracting chemicals. Additionally, other examples of particulardynamical systems correspond to a physical effect or property, such asgravity, light ray, light refraction, reaction diffusion, and cellularautomata. Further, some other examples of particular dynamical systemsinclude iterated function systems or fractal generating systems.

Additionally or alternatively, some dynamical systems correspond toartificially controlled effects or properties of physical matter or ofnon-physical things. For example, a dynamical system may model a fluidwith accelerating properties in contrast to normally dissipative ordecelerating properties of normal fluids. As another example, adynamical system may model a modified direction of gravitational force,modified or random forces of attraction or repulsion among smoke orcloud water vapor, etc. In yet another example, a dynamical system maymodel formation of chemical nuclei that disappear and/or appear out ofnowhere (against conservation of nuclei).

In addition, some of the dynamic filter variations 507 comprise aselection of adaptations specific to a selected dynamic image filter. Inparticular embodiments, the dynamic filter variations 507 includevariations to the simulation values. For example, variations tosimulation values include different parameters or different initialconditions. Further, in some embodiments, the dynamic filter variations507 include different types of display views. Further, in certainimplementations, the dynamic filter variations 507 correspond toparticular render mappings that adjust how the dynamic-simulationfunction executes to induce specific creative effects. Examples of suchcreative effects include selecting light versus dark colors to beadvected, determining advection amounts/direction based on saturation,or determining the rate of refresh to balance or transition betweenmultiple images that form a composite image.

As further shown in FIG. 5A, the graphical user interface 502 acomprises various icons to interact with the client application. Inparticular, the various icons include an image icon 508 to retrieve adigital image. For example, when the image icon 508 is activated, thecomputing device 500 accesses a photo application or opens a cameraviewfinder to capture and utilize a new digital image. Further, thegraphical user interface 502 a comprises left/right navigation elements510 to navigate to a previous or next image in a collection of digitalimages. Additionally, the graphical user interface 502 a comprises aninteractive toggle 512 to start, stop, reset, bookmark, or rewind thesimulation. In addition, the graphical user interface 502 a comprises agesture toggle 514 to switch between enabling gestures to modify thesimulation or alternatively change zoom and pan amounts. Further, thegraphical user interface 502 a comprises a dimmer control 516 tointeractively adjust brightness levels.

Based on detecting a user input selecting a dynamic image filter forsimulating fluid (and a gel-like fluid variation of the dynamic filtervariations 507), the computing device 500 identifies a correspondingdynamic-simulation function. For example, the computing device 500identifies a dynamic-simulation function as comprising a fluid velocitycomponent and/or a chemical density component.

To illustrate, in certain implementations, the computing device 500identifies the dynamic-simulation function for simulating a fluid tocarry or advect chemical density components as comprising the followingequation d[a] (r,t+dt)=d[a] (r−v(r,t)dt,t). This example equationrepresents the chemical density d[a] at location r at the newincremented time step (t+dt). In particular, the chemical density d[a]at location r at the new incremented time step (t+dt) is the same as achemical density value translated, from a neighboring spatial location,by the amount and direction of the fluid velocity v(r,t) over the timestep dt (e.g., seconds). In particular, the term d[a] represents achemical density for a chemical of index a (e.g., an integer whichranges in value from 0 to N−1 for denoting one of N possible chemicalcomponents or elements), the term r represents a spatial location (e.g.,associated with coordinate positions, such as (x,y)), and the term trepresents a time value.

In these or other embodiments, the computing device 500 determines anupdated velocity value at each new time step of the dynamic simulationaccording to the following function: v′(r,t) or v(r, t+dt). Althoughrepresented as a two-dimensional vector, other embodiments includehigher dimensionality for simulations of a two-dimensional fluid (e.g.,to introduce disappearance and reappearance effects in the simulation).Additionally, in some embodiments, the computing device 500 determinesan updated chemical density value at each new time step of the dynamicsimulation according to the following function: d′[a] (r,t) or d′[a](r,t+dt). Additionally or alternatively, in some embodiments, thecomputing device 500 identifies a dynamic-simulation function accordingto other fluid dynamic equations as described by Mark J. Harris in FastFluid Dynamics Simulation on the GPU, GPU Gems, Ch. 38, PublishedSeptember 2007, archived at developer.download.nvidia.com/books/HTML/gpugems/gpugemsch38.html, the contents ofwhich are expressly incorporated herein by reference.

As suggested in FIG. 5B, in certain implementations, the computingdevice 500 generates a simulation flow field comprising simulationvalues at spatial locations. For example, the computing device 500populates initial chemical density values and initial fluid velocityvalues for each spatial location in the simulation flow field.

Based on the simulation values, FIG. 5B shows the computing device 500generating a first modified digital image 518 for display in a graphicaluser interface 502 b. In particular, FIG. 5B shows the computing device500 modifying pixel color values to render changes at an image portion519 depicting an initial set of ripples distorting the lighthouse tosimulate the gel-like fluid according to the dynamic-simulationfunction. For instance, as described above in relation to FIG. 4B, thecomputing device 500 modifies the image portion 519 by generatingupdated pixel color values based on simulation values at spatiallocations that map to corresponding pixels.

Alternatively, as described above, the computing device 500 can generateinitial simulation values corresponding to the digital image 504illustrated in FIG. 5A. In this example, the computing device 500executes the dynamic-simulation function for each spatial location inthe simulation flow field to generate the first modified digital image518. Specifically, in this case, the computing device 500 at time t+dtgenerates updated simulation values by executing the dynamic-simulationfunction to update the initial simulation values. Using the updatedsimulation values, the computing device correspondingly modifies thepixel color values at the image portion 519 for generating and renderingthe first modified digital image 518.

As indicated by FIG. 5C, the computing device 500 again executes thedynamic-simulation function for each spatial location in the simulationflow field to generate a second modified digital image 520 for displayin a graphical user interface 502 c. In particular, FIG. 5C shows thecomputing device 500 having modified pixel color values in the firstmodified digital image 518 to further simulate the gel-like fluidaccording to the dynamic-simulation function at a subsequent time step(e.g., t+2dt). Indeed, as depicted in the second modified digital image520, the computing device 500 has further progressed the simulation ofthe gel-like fluid compared to the first modified digital image 518 byfurther modifying pixel color values at an image portion 521 to depictadditional ripples and swirls based on updated simulation values.

Although not shown, in certain embodiments, the computing device 500comprises a user interface with subsequent image frames of the digitalimage 504 at later time steps in the simulation. In these or otherembodiments, each subsequent image frame comprises additional oralternative modifications according to the dynamic-simulation function.Moreover, in some embodiments, the computing device 500 detectsadditional user input to apply image filters or image modifications thatalter the fluid simulation and/or pause, bookmark, or capture an imageframe (e.g., as described above in relation to the foregoing figures).

As discussed previously, in certain embodiments, the dynamicimage-filter system 110 simulates reaction diffusion to modify a digitalimage over time. FIGS. 6A-6C illustrate a particular example of reactiondiffusion by simulating bacteria-like growth and proliferation at aborder portion of a digital image. In particular, FIG. 6A illustratesthe computing device 600 displaying a graphical user interface 602 athat includes a digital image 604 with a border portion 606, dynamicimage filters 506, and dynamic filter variations 607. As shown in FIG.6A, the computing device 600 displays the digital image 604 with theborder portion 606 comprising initial conditions for a reactiondiffusion simulation. In these or other embodiments, a reactiondiffusion simulation depicts interactions of chemicals with each otherand/or a fluid (e.g., as dispersed or diffused into the fluid).

Based on detecting a user input to select a reaction-diffusion dynamicimage filter (and a bacteria-border variation of the dynamic filtervariations 607), the computing device 600 modifies the border portion606 to include initial bacteria conditions as shown in FIG. 6A. In oneor more embodiments, detecting such user input causes the computingdevice 600 to identify a dynamic-simulation function for reactiondiffusion corresponding to the selected dynamic image filter and bordervariation. In certain implementations, the dynamic-simulation functioncomprises the Gray Scott model of reaction diffusion as described byAbelson, Adams, Coore, Hanson, Nagpal, and Sussman in Gray Scott Modelof Reaction Diffusion archived atgroups.csail.mit.edu/mac/projects/amorphous/GrayScott/, the contents ofwhich are expressly incorporated herein by reference.

Additionally or alternatively, the dynamic-simulation function forimplementing the reaction-diffusion dynamic image filter shown in FIG.6A comprises one or more algorithms that represent Belousov-Zhabotinskyreactions and/or combinations of various other models as described byAnatol M. Zhabotinsky in Belousov-Zhabotinsky Reaction, (2007),Scholarpedia, 2(9):1435, archived atscholarpedia.org/article/Belousov-Zhabotinsky_reaction (hereafterZhabotinsky); and by Christina Kuttler in Reaction-Diffusion EquationsWith Applications, (2011) archived atwww-m6.ma.turn.de/[kuttler/script_reaktdiff.pdf, (hereafter Kuttler).The contents of Kuttler and Zhabotinsky are expressly incorporatedherein by reference.

As shown in FIG. 6B, the computing device 600 generates a graphical userinterface 602 b comprising a first modified digital image 608. As shown,the first modified digital image 608 comprises a first modified borderportion 610. Compared to the border portion 606 in FIG. 6A, the firstmodified border portion 610 comprises additional bacteria-like growthand interactions depicted at a next time step. For example, by updatingthe simulation values and changing corresponding pixel color values forpixels at the first modified border portion 610, the computing device600 depicts bacteria growth/mutation to an enlarged size.

Inside the first modified border portion 610, the first modified digitalimage 608 remains largely the same as the digital image 604. To keep aninterior portion of the first modified digital image 608 the same, incertain implementations, the computing device 600 locks the simulationvalues or prevent execution of the dynamic-simulation function at aninterior portion of the digital image 604 inside the border portion 606.Alternatively, the computing device 600 keeps the interior portion ofthe digital image 604 the same over time by utilizing a mask layer forthe border portion 606 and updating simulation values only for the masklayer.

Likewise, in FIG. 6C, the computing device 600 generates a graphicaluser interface 602 c comprising a second modified digital image 612. Asshown, the second modified digital image 612 comprises a second modifiedborder portion 614. Compared to the border portion 606 and the firstmodified border portion 610 in FIGS. 6A-6B, the second modified borderportion 614 comprises further spreading of the bacteria-like substancedepicted at a subsequent time step. For example, by again updating thesimulation values and changing corresponding pixel color values forpixels at the second modified border portion 614, the computing device600 shows the increased proliferation of bacteria-like organisms acrossan entirety of the border portion.

As previously mentioned, in certain implementations, the dynamicimage-filter system 110 simulates a smoke effect to modify a digitalimage over time. FIGS. 7A-7B illustrate a particular example of a smokeeffect in which the source of the simulated smoke initially correspondsto edges of graphical objects in a mask image. In particular, FIG. 7Aillustrates the computing device 700 comprising a graphical userinterface 702 a that includes a mask image 704. For clarity ofillustration and discussion, FIGS. 7A-7B do not show a digital imageunderlying the mask image 704.

Based on detecting a user input to select a smoke effect dynamic imagefilter (and a dynamic filter variation for smoking object edges), insome embodiments, the computing device 700 identifies a correspondingdynamic-simulation function for simulating smoke. For example, thecomputing device 700 identifies a dynamic-simulation function ascomprising a temperature component according to the function T(r,t) anda chemical density component of smoke according to the function d[smoke](r,t). Each spatial location r in a simulation flow field correspondingto the mask image 704 is associated with a respective smoke densityvalue d[smoke] and a respective temperature value T at time t.

To illustrate, in certain implementations, the computing device 700identifies the dynamic-simulation function for simulating smoke thatmodels the behavior of hotter air being more buoyant than cooler air inaddition to a gravitational force acting on larger smoke particles. Forexample, in certain implementations, the dynamic-simulation functioncomprises semi-Lagrangian computational models and/or computationalfluid dynamic algorithms for implementing vorticity confinement asdescribed by Ronald Fedkiw, Jos Stam, and Henrik W. Jensen, VisualSimulation of Smoke, In Proceedings of SIGGRAPH 2001, archived atgraphics.ucsd.edu/˜henrik/papers/smoke/smoke.pdf, the contents of whichare expressly incorporated herein by reference.

As suggested in FIG. 7A, the computing device 700 simulates a smokeeffect by transforming smoke density values, temperature values, and/orother simulation values within a simulation flow field over time. Inthis particular example of the mask image 704, the computing device 700transforms the smoke density over time within the mask image 704according to the following expression: imagecolor(r,t)=d[smoke](r,t)/(1+d[smoke] (r,t)), where image color(r,t)corresponds to pixel color values for pixels of the mask image 704corresponding to spatial locations r at time t. In this exampleexpression, the smoke density values corresponding to spatial locationsr at time t are divided by the sum of a scalar value of one (“1”) andthe smoke density values at time corresponding to spatial locations r attime t.

In other embodiments (not shown in FIGS. 7A-7B), the computing device700 simulates a smoke effect by directly modifying a digital image asopposed to the mask image 704 overlaying the digital image. In thisexample, the computing device 700 similarly transforms smoke densityvalues, temperature values, and/or other simulation values within asimulation flow field over time. However, in one or moreimplementations, the computing device 700 transforms smoke densityvalues directly within the digital image utilizing a differentdynamic-simulation function than provided above, For instance, thecomputing device may execute the following expression for directlymodifying a digital image instead of the mask image 704: imagecolor(r,t)=digital image(r)+f*d[smoke](r,t), where image color(r,t)corresponds to updated pixel color values for pixels of the mask image(i.e., the digital image) at locations r corresponding to spatiallocations at time t. The factor f (e.g., a value of 1) controls thestrength of the smoke. In this example expression, the original pixelcolor values for pixels of the digital image (represented by digitalimage(r)) are added to the product of the factor f and the smoke densityvalues corresponding to spatial locations r at time t.

Utilizing a dynamic-simulation function for simulating smoke, FIG. 7Bshows the computing device 700 generating a graphical user interface 702b comprising a modified digital image 706. In particular embodiments,the computing device 700 generates updated simulation values in asimulation flow field. Based on the updated simulation values, incertain implementations, the computing device 700 updates pixel colorvalues to generate and render the modified digital image 706 depictingwisps of smoke emitting from edges of graphical objects within themodified digital image 706 (e.g., according to the magnitude of aspatial gradient of image colors). Moreover, although not shown, thecomputing device 700 can iteratively update simulation values insubsequent time steps to depict motion of smoke (e.g., rising orfalling) and/or interactions with other elements, such as auser-generated addition of a wind element or light ray.

In these or other embodiments, one or more source fields determine wherethe simulation emanates from (whether across a digital image or only atspecific locations). For example, although the smoke generation beginsat edges of the leaves/petals in FIG. 7A, in certain embodiments, thecomputing device 700 utilizes a dynamic-simulation function and/or adynamic filter variation that models a different source field. Toillustrate, in some embodiments, the computing device 700 renders thesmoke as originating from a bottom portion of the modified digital image706 and rising upwards with an exponential vertical falloff and withrandom variation.

Additionally or alternatively to the embodiments discussed above inrelation to FIGS. 7A-7B, in some cases, the computing device 700 rendersthe smoke according to image color regions (e.g., based on a range ofimage color values). In this example, the computing device 700 rendersthe smoke according to an exponential function of the color distancebetween each pixel color value and a specified sample image color.Still, in other embodiments, the computing device 700 renders the smokeaccording to an exponential function based on image luminancedifference, image tonal regions (e.g., shadows, mid-tones, orhighlights), etc.

As described in the preceding portions of this disclosure, in certainembodiments, the dynamic image-filter system 110 simulates lightinteracting with various elements, such as smoke, fluids, chemicals,etc. FIG. 8 illustrates a specific example of modifying colors of adigital image to simulate light interacting with smoke. In particular,FIG. 8 illustrates the computing device 800 displaying a graphical userinterface 802 that includes a digital image 804 with a light ray 806depicted across a portion of the digital image 804.

In some embodiments, the computing device 800 generates a lightintensity field L(r,t) as part of (or separate from) a simulation flowfield comprising chemical/smoke density values, temperature values,and/or fluid velocity values. In these or other embodiments, the lightintensity field interacts with the simulation values (e.g., to increaseor decrease a fluid temperature).

For example, one such interaction between a light intensity field andsimulation values involves a simulation flow field for temperature T(r,t) that changes over time according to the followingdynamic-simulation function: T(r, t+dt)=T(r,t)+dt*kL*L(r,t), where kL isa constant that controls the strength of the light interaction (e.g.,one degree Celsius per second for light values ranging from zero toone). In this example expression, temperature values T (r,t) are addedto the product of a time step dt, the constant kL, and the lightintensity field L(r,t). In a similar fashion, additional or alternativeembodiments of the computing device 800 include modifying simulationvalues such as chemical densities or fluid velocity based on the lightintensity field.

After executing a dynamic-simulation function (e.g., for temperature andsmoke density), in certain implementations, the computing device 800generates a preliminary image result. Based on the introduction of oneor more light rays, light likes, light beams, etc., the computing device800 generates a final image result for display (e.g., the digital image804 by modifying the preliminary image result and/or rendering).

In certain implementations, the computing device 800 determines andrenders updated pixel color values for the digital image 804 as thefinal image result according to the following example expression: imagecolor(r,t)=digital image(r)+light color*(c₀+d[a] (r,t)), where imagecolor(r,t) corresponds to updated pixel color values for pixels of thepreliminary image result (i.e., the digital image) at locations rcorresponding to spatial locations at time t. The term light colorrepresents the color of the light ray(s) (e.g., between 0 and 1 such asrespective RGB values of 0.7, 0.45, and 0.3). In addition, the terms c₀and c₁ represent strength constants (e.g., about 0.1 and 0.3,respectively). Further the index a represents one of the densitycomponents, such as smoke, water vapor, chemical elements, ortemperature depending on the type of simulation. In this exampleexpression, pixel color values for the preliminary image (represented bydigital image(r)) are added to the product of light color and a summedvalue, where the summed value is equivalent to the summation of thestrength constant c₀ and the product of the strength constant c₁ andchemical density values d[a] (r,t).

As mentioned above, in certain cases, the dynamic image-filter system110 simulates cloud generation to modify a digital image over time.FIGS. 9A-9C illustrate a specific example of modifying a digital imageto simulate evolving atmospheric cloud generation to create particularcloud formations. In particular, FIG. 9A illustrates the computingdevice 900 displaying a graphical user interface 902 a that includes adigital image 904. As shown, the digital image 904 depicts clouds inaccordance with initial conditions of a cloud simulation (although inother embodiments, a mask image of clouds may be used).

For example, based on detecting a user selection of a dynamic cloudgeneration image filter, the computing device 900 identifies adynamic-simulation function to form the atmospheric clouds shown in FIG.9A depicted with uniform distribution of moisture droplets visible aswhite clouds. In particular embodiments, the dynamic-simulation functionfor cloud generation models the relationship between the rising of hotair, the falling of heavy cloud droplets, and the localized heating ofair when vaporous water condenses to cloud droplets.

To illustrate, the dynamic-simulation function for simulatingatmospheric cloud generation includes a representation of variouscomponents for simulating a low viscosity fluid (e.g., air) withvelocity and chemical mass densities of evaporated water vapor,condensed cloud water droplets, and rain. Thus, in some embodiments, thesimulation flow field comprises simulation values at each spatiallocation in a simulation flow field comprising a velocity field v(r,t)and density fields d[vapor] (r,t), d[cloud] (r,t), and d[rain] (r,t) forvapor, cloud, and rain, respectively. In at least one implementation,the computing device 900 simulates cloud formation based on thesimulation values for the cloud density field d[cloud] (r,t), andoptionally based on simulation values for the vapor density fieldd[vapor] (r,t) and/or rain density field d[rain] (r,t). The differentdensity values at each spatial location r represent the ratio ofassociated mass of each component to the mass of the air in a smallvolume element at time t.

In some embodiments, the dynamic-simulation function for cloudsimulation comprises various cloud dynamics equations as described byMark J. Harris. William V. Baxter III, Thorsten Scheuermann, and AnselmoLastra in Simulation of Cloud Dynamics on Graphics Hardware, inProceedings of Graphics Hardware (2003), Eurographics Association, pp.92-101, archived atusers.cg.tuwien.ac.at/bruckner/ss2004/seminar/A3b/Harris2003%20-%20Simulation%20oP/020Cloud %20Dynamics %20on %20Graphics %20Hardware.pdf, the contents ofwhich are expressly incorporated herein by reference.

FIG. 9B illustrates the computing device 900 generating a graphical userinterface 902 b comprising a first modified digital image 906 for a nexttime step (e.g., t+dt) in the cloud simulation. As suggested in FIG. 9B,the computing device 900 executes the dynamic-simulation function forcloud generation to update simulation values and correspondingly updatepixel color values (e.g., as described above). Indeed, as shown in FIG.9B, tendril-like portions of clouds are depicted as rising up andexpanding from the initial uniform cloud formation in FIG. 9A.

Similarly, FIG. 9C illustrates the computing device 900 generating agraphical user interface 902 c comprising a second modified digitalimage 908 for a subsequent time step (e.g., t+2dt). As suggested in FIG.9C, the computing device 900 detected a gesture stroke to cool down theair temperature, which causes more cloud droplet formation, and hencemore visible clouds. Indeed, as shown in FIG. 9C, the computing device900 generates the cloud formation in the second modified digital image908 with brightened, broken up, and gesture-stirred cloud portions.

In other embodiments, other types of additional user input causedifferent alterations of the cloud simulation. For example, in responseto detecting user interaction with a user interface element, such as anediting tool simulating an accelerator pedal, the computing device 900can update simulation values and pixel color values to show cloudsflowing from left to right instead of right to left (and vice-versa).Different types of gesture strokes can add more water vapor, reduce flowspeed (e.g., change advection rate), etc. to provide the desired imagemodification.

Similarly, in some embodiments, the computing device 900 changessimulation values and/or the direction of advection for a variety ofsimulations in response to detecting tilting, shaking, particularorientations, or other movement of the computing device 900. In these orother embodiments, the computing device 900 comprises an accelerometer,gyroscope, or other suitable sensor device to detect such user inputs.Further, in certain implementations, the computing device 900 alters asimulation, bookmarks an image frame, or saves an image frame, inresponse to detecting interaction with hot keys, sliders, arrows,indicators, input fields, etc. (e.g., an “R” button to reset thesimulation, a slider to adjust strength of gravity).

As just described in relation to FIGS. 9A-9C, the computing device 900dynamically simulates clouds. In these or other embodiments, thecomputing device 900 utilizes one or more cloud generation options tospecify what type of image creation or modification to make. Forinstance, the computing device 900 generates clouds on a blue-skygradient background utilizing the following expressions:cloud_on_sky_color(r,t)=cloud_color(r,t)+sky_blue_color(r), where theterm cloud_color(r,t)=d[cloud](r,t)/(d[cloud](r,t)+d0). In the firstexample expression, the pixel color values corresponding tocloud_color(r,t) are added to the pixel color values corresponding tosky_blue_color(r). In the second example expression, the cloud densityvalues d[cloud] (r,t) are divided by the summation of the cloud densityvalues d[cloud](r,t) and the term d0.

In some embodiments, the term d0 represents a controlling constant setaccording to vapor saturation density at low elevations, whichtranslates to lower portions of a digital image. In particularembodiments, the termd0=(380.16/p0)*exp(17.67*T0_celsius/(T0_celsius+243.5)), where the termT0_celsius=27 degrees Centigrade, and the term p0=10,000 Pascals (e.g.,to represent typical air temperature and pressure values at the Earth'ssurface). In this example expression, the various terms are related byoperators such as an asterisk “*” to represent multiplication, a slash“I” to represent division, a plus “+” to represent addition, and “exp”to represent an exponential function.

As another example option for simulating the clouds shown in FIGS.9A-9C, in some embodiments, the computing device 900 generates ablue-sky gradient background utilizing the following expressions:sky_blue_color(r)=(1−y)*bottom_blue+y*top_blue, where the termbottom_blue represents RGB color values of (67, 176, 246)/255, and theterm top_blue represents RGB color values of (34, 69, 134)/255. The termy represents a spatial vertical coordinate that ranges from a value ofzero at the bottom of the digital image 904 to a value of one at the topof the digital image 904. Operators defined above likewise relatevariables in the expressions laid out in this paragraph. In addition,the minus operator (“−”) indicates subtraction of terms.

In other embodiments, the computing device 900 utilizes additional oralternative approaches of rendering the clouds shown in FIGS. 9A-9C. Forexample, in some embodiments, the computing device 900 overlays cloudsonto an original source image I₀(r). In these embodiments, the computingdevice 900 generates pixel color values for clouds utilizing thefollowing expression: cloud_on_sky_color(r,t)=cloud_color(r,t)+I₀(r). Inthis example expression, pixel color values for clouds cloud_color (r,t)are added to the pixel color values of the original source image I₀(r).As another example, other embodiments include the computing device 900utilizing various alternate blend modes and/or depicting clouds on ablack background (or mask image) instead of a blue gradient background.

As mentioned previously, in one or more embodiments, the dynamicimage-filter system 110 modifies an image over time to simulate imageblooming. In these or other embodiments, a blooming image depictsvarious portions of a digital image bleeding into surrounding portions.FIGS. 10A-10C illustrate a specific example of lighter colors bloomingor expanding over adjacent image regions and over darker colors. Inparticular, FIG. 10A illustrates the computing device 1000 comprising agraphical user interface 1002 a that includes a digital image 1004(e.g., an input image that is unmodified).

Based on detecting a user selection of a blooming dynamic image filter(and a dynamic variation for blooming only light colors), the computingdevice 1000 identifies a corresponding dynamic-simulation function. Forexample, the dynamic-simulation function for blooming images comprises achemical density component as described above.

Utilizing the identified dynamic-simulation function, as illustrated inFIG. 10B, the computing device 1000 generates a graphical user interface1002 b comprising a first modified digital image 1006 in the image bloomsimulation. For instance, FIG. 10B shows the computing device 1000updating pixel color values according to a particular dynamic-simulationfunction to emphasize the advection of lighter colors over darkercolors. Indeed, image portions 1007 depict an initial halation oflighter colors forming a bright fog comprising the lighter colors.

To generate the first modified digital image 1006 as just described, thecomputing device 1000 executes the dynamic-simulation function in mannerthat accounts for image characteristics. For example, the computingdevice 1000 utilizes a dynamic-simulation function in which thesimulation values (e.g., a strength and/or direction of advection ordiffusion) correspond to image tone (e.g., shadows, mid-tones,highlights) or image colors. Further, in some embodiments, the computingdevice 1000 utilizes a dynamic-simulation function that comprisesnon-linear components (e.g., blend modes, such as minimum and maximumfunctions for implementing blend modes to darken or lighten a digitalimage).

Continuing with the image bloom simulation, FIG. 10C illustrates thecomputing device 1000 generating a graphical user interface 1002 ccomprising a second modified digital image 1008 for a subsequent timestep. As shown in FIG. 10C, the computing device 1000 progressivelyadvects the brighter image colors according to the dynamic-simulationfunction. Indeed, image portions 1009 depict a further halation oflighter colors forming a brighter, more expansive fog compared to theimage portions 1007 in FIG. 10B.

Although FIGS. 10B-10C illustrate advection of lighter colors, in otherembodiments, the dynamic-simulation function emphasizes advection ofdarker colors (or certain image tones) instead of brighter colors.Further, in certain implementations, the computing device 1000 combinesdynamic image filters (e.g., for simulating an image bloom and gravity)for increased artistic effects, such as an appearance of windswepthalation. Although not shown, as described above, in one or moreembodiments, the computing device 1000 detects additional user input toshift the direction of the image bloom or to bring back in one or moreof the original pixels at a particular portion to generate a compositeimage of abstract and clear images. Composite images are described infurther detail below in relation to FIGS. 15A-15B and 16A-16B.

As mentioned above, in some embodiments, the dynamic image-filter system110 modifies a digital image over time to simulate an iterated functionsystem. In at least some embodiments, an iterated function systemgenerates a curve or geometric figure such that each part of thecurve/figure has the same or similar statistical character as a whole.Like a snowflake, the curve or figure generated by an iterated functionsystem appears self-similar at different levels of successivemagnification. FIGS. 11A-11B illustrate a particular example of aniterated function system that comprises a fractal flame. By simulating afractal flame, the computing device 1100 can provide image feedback,such as fractal noise to mimic natural textures of marble, fire, fog,clouds, or water. In particular, FIG. 11A illustrates the computingdevice 1100 comprising a graphical user interface 1102 a that includes adigital image 1104 depicting initial conditions according to adynamic-simulation function for simulating a fractal flame.

Based on detecting a fractal flame dynamic image filter, the computingdevice 1100 identifies a corresponding dynamic-simulation function forgenerating the fractals in FIG. 11A via a fractal flame. For example,the computing device 1100 identifies a dynamic-simulation function ascomprising a fractal flame algorithm as described by Scott Draves andErik Reckase in The Fractal Flame Algorithm, September 2003, archived atflam3.com/flame_draves.pdf, the contents of which are expresslyincorporated herein by reference. In other embodiments, the computingdevice 1100 utilizes another dynamic-simulation function to generatemyriad other types of fractals having a variety of different curvature,line segments, etc. For instance, in other embodiments not shown, thecomputing device 1100 generates fractals corresponding to one or moreclasses of iterated function systems, strange attractors, L-systems,escape-time fractal systems, random fractal systems, finite subdivisionrules, etc.

Subsequently, as suggested in FIG. 11B, the computing device 1100 againexecutes the dynamic-simulation function for simulating the fractalflame to update simulation values and corresponding pixel color values.Specifically, as indicated by FIG. 11B, the computing device 1100generates a graphical user interface 1102 b comprising a modifieddigital image 1106 for a subsequent time step. Indeed, as shown in FIG.11B, the computing device 1100 progressively generates more and morefractals according to the fractal flame dynamic-simulation function.

As discussed previously, in certain implementations, the dynamicimage-filter system 110 modifies a digital image over time to simulatecellular automata. By simulating cellular automata, the dynamicimage-filter system 110 can creatively add noise to a digital image(e.g., to give the appearance of being mosaic-like, rustic, distorted,hand drawn, or animated). FIGS. 12A-12B illustrate a particular exampleof simulating cellular automata to generate noise on a per-pixel basis.In particular, FIG. 12A illustrates the computing device 1200 comprisinga graphical user interface 1202 a that includes a digital image 1204depicting initial conditions for cellular automata according to adynamic-simulation function for cellular automaton simulations.

To illustrate, based on detecting a user selection of a cellularautomata dynamic image filter, the computing device 1200 identifies acorresponding dynamic-simulation function for simulating cellularautomata in FIG. 12A. Indeed, as shown in FIG. 12A, the digital image1204 appears to include canvas-like striations in addition to grainyflecks or pixelated portions as if viewed through a cathode-ray-tubetelevision. To generate these effects (or other automaton effects) inthe digital image 1204, the computing device 1200 uses adynamic-simulation function comprising one or more cellular automatonalgorithms described or hyperlinked in Cellular Automata Laboratory,archived at fourmilab.ch/cellab/manual/rules.html, the contents of whichare expressly incorporated herein by reference.

At a subsequent time step in FIG. 12B, the computing device 1200iterates execution of the dynamic-simulation function for cellularautomata to generate a graphical user interface 1202 b comprising amodified digital image 1206. Moreover, as shown in FIG. 12B, thecomputing device 1200 updates one or more simulation values based on auser selection of one or more additional dynamic-simulation functionsfor simulating a fluid and/or based on a user input to swirl or stir afluid (e.g., as described above). Based on the updated simulation valuesreflecting both simulated automata and a simulated fluid, the computingdevice 1200 correspondingly updates the pixel color values to render themodified digital image 1206. Specifically, the computing device 1200updates the pixel color values in the modified digital image 1206 todepict the stirred fluid as having darker pixel colors to impartdistortion against lighter pixel colors.

As provided in the foregoing description, in certain instances, thedynamic image-filter system 110 modifies a digital image over time tosimulate image refraction. In some implementations, the dynamicimage-filter system 110 incorporates the simulation of image refractionin combination with one or more other simulated effects. In these orother embodiments, the dynamic image-filter system 110 updatessimulation values to modulate a digital image so as to produce theappearance of the refraction of light. FIGS. 13A-13B illustrate aspecific example of image refraction where the digital images appears asif viewed through a watery surface. In particular, FIG. 13A illustratesthe computing device 1300 comprising a graphical user interface 1302 athat includes a digital image 1304 depicting initial conditionsaccording to a dynamic-simulation function for reaction diffusion withrefractive effects.

For instance, to generate the digital image 1304 comprising a perturbedwatery surface with heavy rippling, the computing device 1300 uses oneor more corresponding dynamic-simulation functions identified for imagerefraction in water applications. For example, in response to thecomputing device 1300 detecting a user input to select an imagerefraction dynamic image filter (and a water-based filter variation),the computing device 1300 identifies an image refraction function thatincludes part of the reaction diffusion function discussed above inrelation to FIGS. 6A-6C.

Additionally or alternatively, in certain implementations, the computingdevice 1300 generates the digital image 1304 by using an imagerefraction function that dynamically represents a coordinatedisplacement field dr(r,t) as part of or separate from a simulation flowfield. For instance, to generate one or both of the coordinatedisplacement field or the simulation flow field, the computing device1300 generates or determines chemical density values, temperaturevalues, temperature gradient values, and/or fluid velocity values. Incertain implementations, the computing device 1300 utilizes thefollowing expression to represent the coordinate displacement field:dr(r,t)=heat_refraction_strength*Gradient T(r,t), where T represents thefluid temperature at location r and time t, and Gradient represents atwo-dimensional derivative comprising two spatial components. Forexample, Gradient T(r,t)=(d/x T(r,t), d/dy T(r,t)). Additionally, theterm heat_refraction_strength is a constant (e.g., 8 per degree Celsiusfor texel coordinates). In this example expression, the constantheat_refraction_strength is multiplied by the temperature gradientGradient T(r,t).

In certain embodiments, the computing device 1300 generates the digitalimage 1304 by first executing an initial portion of the image refractiondynamic-simulation function (e.g., that models aspects of reactiondiffusion) to generate a preliminary image result. Subsequently, in oneor more embodiments, the computing device 1300 adds specific imagerefraction effects when generating a final image result for display.That is, in some circumstances, the computing device generates thedigital image 1304 by modifying the preliminary image result and/orrendering.

To illustrate, in certain implementations, the computing device 1300determines and renders updated pixel color values for the digital image1304 as the final image result by sampling pixels of the preliminaryimage result at locations offset by the coordinate displacement field.In these or other embodiments, the computing device 1300 uses thefollowing example expression: Refracted image color(r,t)=digitalimage(r+dr(r,t), t), where Refracted image color(r,t) corresponds toupdated pixel color values for pixels of the preliminary image result(i.e., the digital image) at offset locations r+dr(r,t) at time t.

As suggested in FIG. 13B, the computing device 1300 again (e.g.,iteratively) executes the dynamic-simulation function and imagerefraction algorithms for simulating reaction diffusion with imagerefraction. Indeed, FIG. 13B illustrates the computing device 1300generating a graphical user interface 1302 b comprising a modifieddigital image 1306 for a subsequent time step. As shown in FIG. 13B, thewatery appearance in the modified digital image 1306 appears to havedissipated over time according to the dynamic-simulation function (e.g.,by updating simulation values and pixel color values as describedabove).

In other embodiments (not shown), the computing device 1300 implementsrefractive effects without other simulations. In these or otherembodiments, the computing device 1300 uses an input image (e.g., thesource image) instead of a preliminary image result that incorporatesother simulated effects.

As mentioned above, in one or more embodiments, the dynamic image-filtersystem 110 enlivens parameterized-static filters to modify a digitalimage over time. By using dynamic versions ofparameterized-static-filters, the dynamic image-filter system 110effectively combines a dynamic image filter and aparameterized-static-filter. In this manner, users can transform filtersfrom conventional systems into dynamic image filters that change withtime.

FIGS. 14A-14B illustrate an example of dynamically transforming a neuralstyle transfer filter to simulate atmospheric cloud generation. Inparticular, FIG. 14A illustrates the computing device 1400 comprising agraphical user interface 1402 a that includes a digital image 1404comprising application of the neural style transfer filter. For example,based on detecting a selection of a parameterized-static filter (e.g.,the neural style transfer filter), the computing device 1400 applies theparameterized-static-filter to uniformly apply a styling across thedigital image 1404. The digital image 1404 is therefore a static imageresult (e.g., a static version of the original input image) that doesnot change with time.

Subsequently, based on detecting a user selection of a dynamic imagefilter, in certain implementations, the computing device 1400 identifiesone or more dynamic-simulation functions (e.g., as described above). Thedynamic image filter corresponds to simulating a dynamical system. Assuggested in FIG. 14B, the selected dynamic image filter corresponds toparticular dynamical system for simulating atmospheric clouds.

Indeed, as shown in FIG. 14B, the computing device 1400 renders amodified digital image 1406 in a graphical user interface 1402 b. Asdepicted, the modified digital image 1406 comprises a combination of aneural style transfer filter and dynamically simulated clouds. Inparticular, the modified digital image 1406 comprises increased cloudgeneration and non-uniform styling compared to the uniform styling inthe digital image 1404 (which results in poor image quality). Forexample, the modified digital image 1406 largely excludes the neuralstyle transfer filter application on the trees and ground portion. Thus,by enabling local modulations of the neural style transfer filter (e.g.,a vintage style, an abstract style, an oil painting style), thecomputing device 1400 can produce a more visually pleasing (andartistically original) result in the modified digital image 1406.

Although the computing device 1400 generates the modified digital image1406 by transforming a particular application of aparameterized-static-filter, the computing device 1400 can likewisetransform any number of parameterized-static-filters includingPhotoshop's Gaussian blur, blur gallery, liquify, pixelate, distort,noise, render, stylized filters, neural filters (e.g., neural filtergalleries or neural style filters), lens correction, oil paint, highpass, find edges, sharpen, vanishing point, motion blur, etc.

To render the modified digital image 1406, in some instances, thecomputing device 1400 processes the digital image 1404. For example, thecomputing device 1400 generates simulation values based on thedynamic-simulation function for cloud generation in addition to theparameters of the parameterized-static-filter. Additionally, asdescribed above, the computing device 1400 uses the simulation values toupdate the pixel color values of the digital image 1404 in FIG. 14A.Based on the updated pixel color values, the computing device 1400renders the modified digital image 1406.

In these or other embodiments, the computing device 1400 weights valuesfor the dynamic-simulation function and/or theparameterized-static-filter. To illustrate, the computing device 1400adjusts the weights in a style transfer neural network (directly orindirectly) by changing the blending fraction between inputs into thestyle transfer neural network. In certain implementations, the computingdevice 1400 directly sets the value of a blending fraction for blendinginputs (e.g., style vectors for digital images) into the style transferneural network.

Moreover, in one or more embodiments, the computing device 1400 iteratesthe foregoing approach to further modulate the digital image 1404 insubsequent time steps. In this manner, the computing device 1400 canenliven parameterized-static-filters by employing the dynamics ofsimulation flow fields for dynamic image filters.

In alternative embodiments, one or more of the dynamic image filterscomprise a dynamic version of a parameterized-static-filter (e.g., aparameterized-static-filter that the computing device 1400 previouslytransformed into a dynamic image filter). For example, rather thanseparately executing a parametrized-static-filter and then a dynamicimage filter, a user may make a single selection of a dynamic imagefilter that is based on a combination of a parameterized-static-filterand one or more dynamic simulations.

As discussed previously, in certain implementations, the dynamicimage-filter system 110 performs dynamic simulations to modify a maskimage (or mask) over time. By modifying a mask that overlays a digitalimage, the dynamic image-filter system 110 can perform one or more ofthe dynamic simulations discussed above while leaving the underlyingdigital image unedited in its original form.

FIGS. 15A-15B illustrate such an example by simulating an opaque (grey)fluid or chemical. In particular, FIG. 15A illustrates the computingdevice 1500 comprising a graphical user interface 1502 a that includes amask 1504 overlaying a digital image 1506. In addition, FIG. 15Aillustrates the computing device 1500 having activated a dynamic imagefilter for simulating the opaque (grey) fluid or chemical within themask 1504. Thus, in response to detecting a user input to erase orremove portions of the mask 1504, FIG. 15A shows the computing device1500 removing a first portion of the mask 1504 to reveal a portion ofthe digital image 1506 under the mask 1504.

In a graphical user interface 1502 b of FIG. 15B, the computing device1500 generates a modified mask 1508 for display in response to detectingadditional user input to selectively reveal additional portions of thedigital image 1506. In these or other embodiments, as the computingdevice 1500 selectively reveals portions of the digital image 1506, thecomputing device 1500 simultaneously hides one or more correspondingportions of the mask 1504.

As an example of selectively revealing portions of the digital image1506, the computing device 1500 selectively hides portions of the mask1504 by removing or deleting portions of the mask 1504 to generate themodified mask 1508. In other embodiments, the computing device 1500selectively hides portions of the mask 1504 by obfuscating portions ofthe mask 1504 to generate the modified mask 1508. For instance, thecomputing device 1500 updates simulation values and correspondinglyupdates a transparency/opacity of pixel color values for the modifiedmask 1508.

Similar to FIGS. 15A-15B, FIGS. 16A-16B illustrate an example of thedynamic image-filter system 110 performing a dynamic simulation within amask image over time to generate a composite image. In a compositeimage, two or more digital images are combined in some manner (e.g., twoadjacent images that transition into each other).

In particular, FIG. 16A illustrates the computing device 1600 comprisinga graphical user interface 1602 a that includes a mask image 1604overlaying a digital image 1606. In addition, FIG. 16A illustrates thecomputing device 1600 having activated a dynamic image filter forsimulating a fluid or chemical within the mask image 1604. Thus, inresponse to detecting a user input to erase or hide portions of the maskimage 1604, FIG. 16A shows the computing device 1600 hiding a firstportion of the mask image 1604 to reveal a portion of the digital image1606 under the mask image 1604.

In a graphical user interface 1602 b of FIG. 16B, the computing device1600 generates a modified mask image 1608 for display in response todetecting additional user input to selectively reveal additionalportions of the digital image 1606. In these or other embodiments, asthe computing device 1600 selectively reveals portions of the digitalimage 1606, the computing device 1600 simultaneously hides one or morecorresponding portions of the mask image 1604.

For example, as described above, the computing device 1600 optionallyremoves or deletes portions of the mask image 1604 to generate themodified mask image 1608. In other implementations, the computing device1600 obfuscates portions of the mask image 1604 to generate the modifiedmask image 1608 (e.g., by updating simulation values and correspondinglyupdating a transparency/opacity of pixel color values for the modifiedmask image 1608).

As mentioned above, in certain instances, the dynamic image-filtersystem 110 limits dynamic stimulations to user-designated portions of adigital image based on additional user input. To illustrate, the dynamicimage-filter system 110 freezes or locks simulation values at spatiallocations outside or inside of a user-designated area (e.g., aresist-area over a human face to prevent modification of facial featuresportrayed in the digital image). FIGS. 17A-17B illustrate an example ofgenerating a resist area that appears to rebuff encroachment of asimulated fluid or chemical in a circular region.

In particular, FIG. 17A illustrates the computing device 1700 generatinga graphical user interface 1702 a comprising a digital image 1704 and atoolbar 1706 (described further below). In addition, FIG. 17Aillustrates the computing device 1700 having activated a dynamic imagefilter for simulating a grey fluid or chemical 1705 over a blackbackground.

As further illustrated in FIG. 17A, the toolbar 1706 provides varioususer interface elements or tools to perform various operations describedin the present disclosure. In certain implementations, the toolbar 1706comprises the same or similar features (albeit in different format) asshown and described in relation to FIG. 5A. To illustrate, in someembodiments, the computing device 1700 generates the resist area 1710 byselecting a certain “style” in the toolbar 1706 and applying user inputswith the selected style activated. Similarly, in some embodiments, thecomputing device 1700 can draw around an image region and adjust variousparameters such as “advection” (e.g., to slow down the movement) or“decay” (e.g., to dampen the simulated affect).

In FIG. 17B, the computing device 1700 generates a graphical userinterface 1702 b comprising a modified digital image 1708 with a resistarea 1710. For example, in response to detecting additional user input(e.g., finger swipe via a brush tool) to apply the resist area 1710,FIG. 17B shows the computing device 1700 resisting the greyfluid/chemical 1705 in a corresponding circular area.

To generate the resist area 1710, in some embodiments, the computingdevice 1700 modifies simulation values at spatial locations in and/oraround the resist area 1710. To illustrate, the computing device 1700reduces velocity values and/or chemical density values at spatiallocations corresponding to the resist area 1710. In so doing, thecomputing device 1700 reduces (and in some portions, zeros out) thesimulated effects of the grey fluid/chemical 1705. Alternatively, insome embodiments, the computing device 1700 stops executing thedynamic-simulation function inside the resist area 1710.

In other embodiments, the computing device 1700 inverts the resist area1710 such that only portions within the resist area 1710 undergo thesimulated effect. In this example, portions corresponding to theadditional user input (e.g., brush strokes) are activated, but not otherimage regions.

In the alternative to the embodiments just described for FIGS. 17A and17B, in some embodiments, the computing device 1700 does not generatethe resist area 1710. Instead, the computing device 1700 utilizesvarious tools from the toolbar 1706 in conjunction with simulatedaffects to visually show where a user makes local corrections. Forinstance, the computing device 1700 generates a visual aid of adecaying/disappearing path of green dye (a simulated fluid/chemical)that trails cursor interactions or gesture swipes within the graphicaluser interface 1702 b. In these or other embodiments, such a visual aidis a dynamic graphical user interface component that is not used tomodify a digital image, but rather as a way to visually track how a useris interacting with the digital image.

Turning to FIG. 18, additional detail will now be provided regardingvarious components and capabilities of the dynamic image-filter system110. In particular, FIG. 18 illustrates an example schematic diagram ofa computing device 1800 (e.g., the server(s) 102, the client device 106,and/or the computing devices 500-1700) implementing the dynamicimage-filter system 110 in accordance with one or more embodiments ofthe present disclosure. As shown, the dynamic image-filter system 110 inone or more embodiments includes a digital image manager 1802, dynamicimage filter controller 1804, a dynamic-simulation function manager1806, a simulation engine 1808, a user interface manager 1810, and adata storage facility 1812.

The digital image manager 1802 receives, accesses, stores, transmits,modifies, generates, and/or renders digital images (as described inrelation to the foregoing figures). In particular embodiments, thedigital image manager 1802 accesses an image from the data storagefacility 1812 or a data store. Additionally or alternatively, thedigital image manager 1802 transmits a digital image to the userinterface manager 1810 for presenting within a user interface.

The dynamic image filter controller 1804 stores, generates, presents,and/or transmits computer-executable instructions corresponding to oneor more dynamic image filters (as described in relation to the foregoingfigures). In particular embodiments, the dynamic image filter controller1804 detects a user input to select a dynamic image filter forsimulating, within a digital image, a dynamical system. Additionally, incertain implementations, the dynamic image filter controller 1804communicates a user selection of dynamic image filter to thedynamic-simulation function manager 1806.

The dynamic-simulation function manager 1806 identifies one or moredynamic-simulation functions corresponding to a dynamic image filter (asdescribed in relation to the foregoing figures). In particularembodiments, the dynamic-simulation function manager 1806 determinessimulation values for a particular dynamical system based on thedynamic-simulation function. For example, the dynamic-simulationfunction manager 1806 generates a simulation flow field comprising atleast one of the density values, the velocity values, or the temperaturevalues for a particular dynamical system corresponding to a physicaleffect or property of a physical matter at spatial locations associatedwith the digital image.

The simulation engine 1808 modifies a digital image over time tosimulate the dynamical system (as described in relation to the foregoingfigures). In particular embodiments, the simulation engine 1808 updatessimulation values for correspondingly updating pixel color values forone or more pixels of a digital image. For example, in some embodiments,the simulation engine 1808 executes a dynamic-simulation function ateach spatial location to spatially translate or advect simulation valuesacross a simulation flow field (e.g., to neighboring spatial locations).Based on the spatially translated simulation values, the simulationengine 1808 in certain implementations generates corresponding pixelcolor values.

The user interface manager 1810 in one or more embodiments provides,manages, and/or controls a graphical user interface (or simply “userinterface”). In particular embodiments, the user interface manager 1810generates and displays a user interface by way of a display screencomposed of a plurality of graphical components, objects, and/orelements that allow a user to perform a function. For example, the userinterface manager 1810 receives user inputs from a user, such as aclick/tap to select a dynamic image filter or provide an image filter oran image modification that alters a simulation. Additionally, the userinterface manager 1810 in one or more embodiments presents a variety oftypes of information, including text, digital images, simulatedgraphical content, or other information for presentation in a userinterface (e.g., in series to present a dynamic simulation within adigital image over time).

The data storage facility 1812 maintains data for the dynamicimage-filter system 110. The data storage facility 1812 (e.g., via oneor more memory devices) maintains data of any type, size, or kind, asnecessary to perform the functions of the dynamic image-filter system110. In particular embodiments, the data storage facility 1812coordinates storage mechanisms for other components of the computingdevice 1800 (e.g., for storing dynamic image filters, dynamic-simulationfunctions, and/or digital images).

Each of the components of the computing device 1800 can includesoftware, hardware, or both. For example, the components of thecomputing device 1800 can include one or more instructions stored on acomputer-readable storage medium and executable by processors of one ormore computing devices, such as a client device or server device. Whenexecuted by the one or more processors, the computer-executableinstructions of the dynamic image-filter system 110 can cause thecomputing device(s) (e.g., the computing device 1800) to perform themethods described herein. Alternatively, the components of the computingdevice 1800 can include hardware, such as a special-purpose processingdevice to perform a certain function or group of functions.Alternatively, the components of the computing device 1800 can include acombination of computer-executable instructions and hardware.

Furthermore, the components of the computing device 1800 may, forexample, be implemented as one or more operating systems, as one or morestand-alone applications, as one or more modules of an application, asone or more plug-ins, as one or more library functions or functions thatmay be called by other applications, and/or as a cloud-computing model.Thus, the components of the computing device 1800 may be implemented asa stand-alone application, such as a desktop or mobile application.Furthermore, the components of the computing device 1800 may beimplemented as one or more web-based applications hosted on a remoteserver.

The components of the computing device 1800 may also be implemented in asuite of mobile device applications or “apps.” To illustrate, thecomponents of the computing device 1800 may be implemented in anapplication, including but not limited to ILLUSTRATOR®, ADOBE FRESCO®,PHOTOSHOP®, LIGHTROOM®, ADOBE® XD, or AFTER EFFECTS®. Product names,including “ADOBE” and any other portion of one or more of the foregoingproduct names, may include registered trademarks or trademarks of AdobeInc. in the United States and/or other countries.

FIGS. 1-18, the corresponding text, and the examples provide severaldifferent systems, methods, techniques, components, and/or devices ofthe dynamic image-filter system 110 in accordance with one or moreembodiments. In addition to the above description, one or moreembodiments can also be described in terms of flowcharts including actsfor accomplishing a particular result. For example, FIG. 19 illustratesa flowchart of a series of acts 1900 for dynamically modifying at leasta portion of a digital image over time in accordance with one or moreembodiments. The dynamic image-filter system 110 may perform one or moreacts of the series of acts 1900 in addition to or alternatively to oneor more acts described in conjunction with other figures. While FIG. 19illustrates acts according to one embodiment, alternative embodimentsmay omit, add to, reorder, and/or modify any of the acts shown in FIG.19. The acts of FIG. 19 can be performed as part of a method.Alternatively, a non-transitory computer-readable medium can compriseinstructions that, when executed by one or more processors, cause acomputing device to perform the acts of FIG. 19. In some embodiments, asystem can perform the acts of FIG. 19.

As shown, the series of acts 1900 includes an act 1902 of presenting,within a graphical user interface, a digital image and one or moredynamic image filters for user selection. For instance, in some cases,the one or more dynamic image filters for user selection comprisedynamic image filters for simulating one or more of a physical effect orproperty of a physical matter or an effect or a property of an iteratedfunction system.

In addition, the series of acts 1900 comprises an act 1904 of detectinga user input to select a dynamic image filter from the one or moredynamic image filters to simulate, within the digital image, a dynamicalsystem. In some embodiments, simulating the dynamical system comprisessimulating a particular dynamical system corresponding to a physicaleffect or property of a physical matter or an effect or property of aniterated function system. For example, simulating the particulardynamical system corresponding to the physical effect or property of thephysical matter comprises simulating at least one of gravity, a fluid,smoke, fire, rain, a light ray, light refraction, an atmospheric cloud,interacting chemicals, reaction diffusion, cellular automata, or animage bloom.

Further, the series of acts 1900 includes an act 1906 a of based ondetecting the user input to select the dynamic image filter, identifyinga dynamic-simulation function. In particular embodiments, the act 1906 aincludes identifying a dynamic-simulation function corresponding to thedynamical system.

In addition, the series of acts 1900 further includes an act 1906 b ofbased on detecting the user input to select the dynamic image filter,dynamically modifying, within the graphical user interface, at least aportion of the digital image over time. In particular embodiments, theact 1906 b includes dynamically modifying, within the graphical userinterface, at least a portion of the digital image over time to simulatethe dynamical system within the digital image according to thedynamic-simulation function. In certain implementations, the act 1906 bcomprises dynamically modifying at least the portion of the digitalimage corresponding to an image tonal region, an image color region, oran image edge region. Additionally or alternatively, the act 1906 bcomprises dynamically modifying at least the portion of the digitalimage corresponding to a range or set of either absolute image pixelcoordinates or texel coordinates.

In these or other embodiments, the act 1906 b comprises dynamicallymodifying, within the graphical user interface, pixel color values forone or more pixels of the digital image to simulate the dynamical systemover time by utilizing the dynamic-simulation function to update one ormore of the simulation values across the simulation flow field. Incertain implementations, updating one or more of the simulation valuesacross the simulation flow field comprises utilizing thedynamic-simulation function to determine a direction and an amount of asimulation value for a spatial location to spatially translate away fromthe spatial location at a next time step following an initial time step.

It is understood that the outlined acts in the series of acts 1900 areonly provided as examples, and some of the acts may be optional,combined into fewer acts, or expanded into additional acts withoutdetracting from the essence of the disclosed embodiments. Additionally,the acts described herein may be repeated or performed in parallel withone another or in parallel with different instances of the same orsimilar acts. As an example of an additional act not shown in FIG. 19,act(s) in the series of acts 1900 may include an act of: generating asimulation flow field comprising simulation values at spatial locationsassociated with the digital image, the simulation values correspondingto one of preset values or characteristics of the digital image; anddynamically modifying at least the portion of the digital image bymodifying pixel color values for one or more pixels of the digital imageto simulate the dynamical system by utilizing the dynamic-simulationfunction to update one or more of the simulation values across thesimulation flow field.

In another example of an additional act not shown in FIG. 19, act(s) inthe series of acts 1900 may include an act of: rendering, for an initialtime step, pixel color values for the digital image to simulate thedynamical system within the digital image according to simulation valueswithin a simulation flow field based on the dynamic-simulation function;detecting additional user input to apply an image filter or an imagemodification to the digital image; and based on detecting the additionaluser input, rendering, for a subsequent time step, adjusted pixel colorvalues for the digital image to depict the digital image with the imagefilter or the image modification while simulating the dynamical systemwithin the digital image.

As another example of an additional act not shown in FIG. 19, act(s) inthe series of acts 1900 may include an act of: detecting, via thegraphical user interface, additional user input to: alter, pause, rewindto, or bookmark one or more image frames corresponding to the simulationwithin the digital image of the dynamical system within the digitalimage; and capturing the one or more image frames at one or moreparticular times during the simulation within the digital image of thedynamical system. In certain implementations, altering the simulation ofthe dynamical system within the digital image comprises modifying one ormore simulation values across the simulation flow field.

In yet another example of an additional act not shown in FIG. 19, act(s)in the series of acts 1900 may include an act of: detecting, via thegraphical user interface, additional user input to bookmark a portion ofthe simulation; and continuing with the simulation; or returning to thebookmarked portion of the simulation to save an image frame of thedigital image corresponding to the bookmarked portion or begin a newsimulation starting from the bookmarked portion.

In a further example of an additional act not shown in FIG. 19, act(s)in the series of acts 1900 may include an act of detecting, via thegraphical user interface, additional user input to increase or decreasea speed of simulating the dynamical system within the digital image.

In an additional example of an additional act not shown in FIG. 19,act(s) in the series of acts 1900 may include: based on detecting theuser input to select the dynamic image filter, generating a mask thatoverlays the digital image; and dynamically modifying, within thegraphical user interface, at least a portion of the mask over time toselectively reveal one or more portions of the digital image bysimulating the dynamical system within the mask according to thedynamic-simulation function and one or more additional user inputsselecting one or more portions of the mask.

In another example of an additional act not shown in FIG. 19, act(s) inthe series of acts 1900 may include an act of: determining, for a timestep, at least one of density values, velocity values, or temperaturevalues corresponding to the dynamical system for a physical effect orproperty of a physical matter utilizing the dynamic-simulation function;generating a simulation flow field corresponding to the digital imagecomprising at least one of the density values, the velocity values, orthe temperature values for the physical effect or property of thephysical matter at spatial locations associated with the digital image;and rendering, for the time step, updated pixel color values for thedigital image to simulate the dynamical system for the physical effector property of the physical matter according to at least one of thedensity values, the velocity values, or the temperature values withinthe simulation flow field based on the dynamic-simulation function.

In yet another example of an additional act not shown in FIG. 19, act(s)in the series of acts 1900 may include an act of generating a simulationflow field comprising simulation values at spatial locations associatedwith the digital image.

In a further example of an additional act not shown in FIG. 19, act(s)in the series of acts 1900 may include an act of updating one or more ofthe simulation values across the simulation flow field by utilizing thedynamic-simulation function to spatially translate a simulation valuefor a spatial location at an initial time step to a neighboring spatiallocation at a next time step following the initial time step.

In an additional example of an additional act not shown in FIG. 19,act(s) in the series of acts 1900 may include an act of: identifying apixel with a set of pixel color values corresponding to a simulationvalue for a spatial location at an initial time step; spatiallytranslating, at a next time step following the initial time step, adifferent simulation value to the spatial location from a neighboringspatial location in accordance with the dynamic-simulation function; andupdating, at the next time step, the pixel to include a different set ofpixel color values corresponding to the different simulation valuespatially translated to the spatial location from the neighboringspatial location.

In another example of an additional act not shown in FIG. 19, act(s) inthe series of acts 1900 may include an act of: generating a maskcomprising an additional digital image that overlays the digital image;dynamically modifying, within the graphical user interface, at least aportion of the mask over time to selectively reveal one or more portionsof the digital image by simulating the dynamical system within the maskaccording to the dynamic-simulation function and one or more additionaluser inputs selecting one or more portions of the mask; and based onrevealing the one or more portions of the digital image, simultaneouslyhiding one or more corresponding portions of the additional digitalimage to dynamically generate a composite image of both the digitalimage and the additional digital image.

In yet another example of an additional act not shown in FIG. 19, act(s)in the series of acts 1900 may include an act of: determining, for atime step, at least one of density values, velocity values, temperaturevalues, viscosity values, vorticity values, intensity values,concentration values, opacity values, or rate-of-diffusion valuescorresponding to the dynamical system for a physical effect or propertyof a physical matter utilizing the dynamic-simulation function;generating the simulation flow field comprising at least one of thedensity values, the velocity values, the temperature values, theviscosity values, the vorticity values, the intensity values, theconcentration values, the opacity values, or the rate-of-diffusionvalues for the physical effect or property of the physical matter at thespatial locations associated with the digital image; and rendering, forthe time step, updated pixel color values for the digital image tosimulate the dynamical system for the physical effect or property of thephysical matter according to at least one of the density values, thevelocity values, the temperature values, the viscosity values, thevorticity values, the intensity values, the concentration values, or therate-of-diffusion values within the simulation flow field based on thedynamic-simulation function.

In a further example of an additional act not shown in FIG. 19, act(s)in the series of acts 1900 may include an act of: prior to detecting aselection of the dynamic image filter, apply aparameterized-static-filter to generate a static version of the digitalimage; and based on detecting the user input to select the dynamic imagefilter, dynamically modify pixel color values for one or more pixels ofthe static version of the digital image to simulate the dynamical systemover time.

In yet another example an additional act not shown in FIG. 19, act(s) inthe series of acts 1900 may include an act of detecting an additionaluser input to select a portion of the digital image at which to applythe dynamic image filter.

As just mentioned, in one or more embodiments, act(s) the series of acts1900 include based on detecting the user input to select the dynamicimage filter, performing a step for simulating the dynamical systemwithin the digital image over time. For instance, the act of identifyinga dynamic-simulation function corresponding to a dynamical system andthe acts described above in relation to FIGS. 4A-4B can comprise thecorresponding acts (or structure) for performing a step for simulatingthe dynamical system within the digital image over time.

Embodiments of the present disclosure may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentdisclosure also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In particular, one or more of the processes described hereinmay be implemented at least in part as instructions embodied in anon-transitory computer-readable medium and executable by one or morecomputing devices (e.g., any of the media content access devicesdescribed herein). In general, a processor (e.g., a microprocessor)receives instructions, from a non-transitory computer-readable medium,(e.g., memory), and executes those instructions, thereby performing oneor more processes, including one or more of the processes describedherein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the disclosure can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed by a processor, cause a general-purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed by ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the disclosure. Thecomputer-executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the disclosure may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The disclosuremay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the present disclosure can also be implemented in cloudcomputing environments. As used herein, the term “cloud computing”refers to a model for enabling on-demand network access to a shared poolof configurable computing resources. For example, cloud computing can beemployed in the marketplace to offer ubiquitous and convenient on-demandaccess to the shared pool of configurable computing resources. Theshared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Software as a Service (“SaaS”), Platform as a Service(“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computingmodel can also be deployed using different deployment models such asprivate cloud, community cloud, public cloud, hybrid cloud, and soforth. In addition, as used herein, the term “cloud-computingenvironment” refers to an environment in which cloud computing isemployed.

FIG. 20 illustrates a block diagram of an example computing device 2000that may be configured to perform one or more of the processes describedabove. One will appreciate that one or more computing devices, such asthe computing device 2000 may represent the computing devices describedabove (e.g., the server(s) 102, the client device 106, and/or thecomputing devices 500-1800,). In one or more embodiments, the computingdevice 2000 may be a mobile device (e.g., a mobile telephone, asmartphone, a PDA, a tablet, a laptop, a camera, a tracker, a watch, awearable device, etc.). In some embodiments, the computing device 2000may be a non-mobile device (e.g., a desktop computer or another type ofclient device). Further, the computing device 2000 may be a serverdevice that includes cloud-based processing and storage capabilities.

As shown in FIG. 20, the computing device 2000 can include one or moreprocessor(s) 2002, memory 2004, a storage device 2006, input/outputinterfaces 2008 (or “I/O interfaces 2008”), and a communicationinterface 2010, which may be communicatively coupled by way of acommunication infrastructure (e.g., bus 2012). While the computingdevice 2000 is shown in FIG. 20, the components illustrated in FIG. 20are not intended to be limiting. Additional or alternative componentsmay be used in other embodiments. Furthermore, in certain embodiments,the computing device 2000 includes fewer components than those shown inFIG. 20. Components of the computing device 2000 shown in FIG. 20 willnow be described in additional detail.

In particular embodiments, the processor(s) 2002 includes hardware forexecuting instructions, such as those making up a computer program. Asan example, and not by way of limitation, to execute instructions, theprocessor(s) 2002 may retrieve (or fetch) the instructions from aninternal register, an internal cache, memory 2004, or a storage device2006 and decode and execute them.

The computing device 2000 includes memory 2004, which is coupled to theprocessor(s) 2002. The memory 2004 may be used for storing data,metadata, and programs for execution by the processor(s). The memory2004 may include one or more of volatile and non-volatile memories, suchas Random-Access Memory (“RAM”), Read-Only Memory (“ROM”), a solid-statedisk (“SSD”), Flash, Phase Change Memory (“PCM”), or other types of datastorage. The memory 2004 may be internal or distributed memory.

The computing device 2000 includes a storage device 2006 includesstorage for storing data or instructions. As an example, and not by wayof limitation, the storage device 2006 can include a non-transitorystorage medium described above. The storage device 2006 may include ahard disk drive (HDD), flash memory, a Universal Serial Bus (USB) driveor a combination these or other storage devices.

As shown, the computing device 2000 includes one or more I/O interfaces2008, which are provided to allow a user to provide input to (such asuser strokes), receive output from, and otherwise transfer data to andfrom the computing device 2000. These I/O interfaces 2008 may include amouse, keypad or a keyboard, a touch screen, camera, optical scanner,network interface, modem, other known I/O devices or a combination ofsuch I/O interfaces 2008. The touch screen may be activated with astylus or a finger.

The I/O interfaces 2008 may include one or more devices for presentingoutput to a user, including, but not limited to, a graphics engine, adisplay (e.g., a display screen), one or more output drivers (e.g.,display drivers), one or more audio speakers, and one or more audiodrivers. In certain embodiments, I/O interfaces 2008 are configured toprovide graphical data to a display for presentation to a user. Thegraphical data may be representative of one or more graphical userinterfaces and/or any other graphical content as may serve a particularimplementation.

The computing device 2000 can further include a communication interface2010. The communication interface 2010 can include hardware, software,or both. The communication interface 2010 provides one or moreinterfaces for communication (such as, for example, packet-basedcommunication) between the computing device and one or more othercomputing devices or one or more networks. As an example, and not by wayof limitation, communication interface 2010 may include a networkinterface controller (NIC) or network adapter for communicating with anEthernet or other wire-based network or a wireless NIC (WNIC) orwireless adapter for communicating with a wireless network, such as aWI-FI. The computing device 2000 can further include a bus 2012. The bus2012 can include hardware, software, or both that connects components ofthe computing device 2000 to each other.

In the foregoing specification, the invention has been described withreference to specific example embodiments thereof. Various embodimentsand aspects of the invention(s) are described with reference to detailsdiscussed herein, and the accompanying drawings illustrate the variousembodiments. The description above and drawings are illustrative of theinvention and are not to be construed as limiting the invention.Numerous specific details are described to provide a thoroughunderstanding of various embodiments of the present invention.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. For example, the methods described herein may beperformed with less or more steps/acts or the steps/acts may beperformed in differing orders. Additionally, the steps/acts describedherein may be repeated or performed in parallel to one another or inparallel to different instances of the same or similar steps/acts. Thescope of the invention is, therefore, indicated by the appended claimsrather than by the foregoing description. All changes that come withinthe meaning and range of equivalency of the claims are to be embracedwithin their scope.

What is claimed is:
 1. A non-transitory computer-readable storage mediumcomprising instructions that, when executed by at least one processor,cause a computing device to: present, within a graphical user interface,a digital image and one or more dynamic image filters for userselection; detect a user input to select a dynamic image filter from theone or more dynamic image filters to simulate, within the digital image,a dynamical system; and based on detecting the user input to select thedynamic image filter: identify a dynamic-simulation functioncorresponding to the dynamical system; and dynamically modify, withinthe graphical user interface, at least a portion of the digital imageover time to simulate the dynamical system within the digital imageaccording to the dynamic-simulation function.
 2. The non-transitorycomputer-readable storage medium of claim 1, further comprisinginstructions that, when executed by the at least one processor, causethe computing device to dynamically modify at least the portion of thedigital image over time to simulate the dynamical system by simulating aparticular dynamical system corresponding to a physical effect orproperty of a physical matter or an effect or property of an iteratedfunction system.
 3. The non-transitory computer-readable storage mediumof claim 2, further comprising instructions that, when executed by theat least one processor, cause the computing device to simulate theparticular dynamical system corresponding to the physical effect orproperty of the physical matter by simulating at least one of gravity, afluid, smoke, fire, rain, a light ray, light refraction, an atmosphericcloud, interacting chemicals, reaction diffusion, cellular automata, oran image bloom.
 4. The non-transitory computer-readable storage mediumof claim 1, further comprising instructions that, when executed by theat least one processor, cause the computing device to: generate asimulation flow field comprising simulation values at spatial locationsassociated with the digital image, the simulation values correspondingto one of preset values or characteristics of the digital image; anddynamically modify at least the portion of the digital image bymodifying pixel color values for one or more pixels of the digital imageto simulate the dynamical system by utilizing the dynamic-simulationfunction to update one or more of the simulation values across thesimulation flow field.
 5. The non-transitory computer-readable storagemedium of claim 1, further comprising instructions that, when executedby the at least one processor, cause the computing device to: render,for an initial time step, pixel color values for the digital image tosimulate the dynamical system within the digital image according tosimulation values within a simulation flow field based on thedynamic-simulation function; detect additional user input to apply animage filter or an image modification to the digital image; and based ondetecting the additional user input, render, for a subsequent time step,adjusted pixel color values for the digital image to depict the digitalimage with the image filter or the image modification while simulatingthe dynamical system within the digital image.
 6. The non-transitorycomputer-readable storage medium of claim 1, further comprisinginstructions that, when executed by the at least one processor, causethe computing device to dynamically modify at least the portion of thedigital image corresponding to an image tonal region, an image colorregion, or an image edge region.
 7. The non-transitory computer-readablestorage medium of claim 1, further comprising instructions that, whenexecuted by the at least one processor, cause the computing device todynamically modify at least the portion of the digital imagecorresponding to a range or set of either absolute image pixelcoordinates or texel coordinates.
 8. The non-transitorycomputer-readable storage medium of claim 1, further comprisinginstructions that, when executed by the at least one processor, causethe computing device to detect, via the graphical user interface,additional user input to: alter, pause, rewind to, or bookmark one ormore image frames corresponding to a simulation of the dynamical systemwithin the digital image; and capture the one or more image frames atone or more particular times during the simulation within the digitalimage of the dynamical system.
 9. The non-transitory computer-readablestorage medium of claim 1, further comprising instructions that, whenexecuted by the at least one processor, cause the computing device to:detect, via the graphical user interface, additional user input tobookmark a portion of a simulation of the dynamic system within thedigital image; and continue with the simulation; or return to thebookmarked portion of the simulation to save an image frame of thedigital image corresponding to the bookmarked portion or begin a newsimulation starting from the bookmarked portion.
 10. The non-transitorycomputer-readable storage medium of claim 1, further comprisinginstructions that, when executed by the at least one processor, causethe computing device to detect, via the graphical user interface,additional user input to increase or decrease a speed of simulating thedynamical system within the digital image.
 11. A system comprising: oneor more memory devices comprising a digital image and a set of dynamicimage filters; and one or more processors configured to cause the systemto: present, within a graphical user interface, the digital image andthe set of dynamic image filters for user selection; detect a user inputto select a dynamic image filter from the set of dynamic image filtersto simulate a dynamical system in the digital image; and based ondetecting the user input to select the dynamic image filter: identify adynamic-simulation function corresponding to the dynamical system;generate a simulation flow field comprising simulation values at spatiallocations associated with the digital image; and dynamically modify,within the graphical user interface, pixel color values for one or morepixels of the digital image to simulate the dynamical system over timeby utilizing the dynamic-simulation function to update one or more ofthe simulation values across the simulation flow field.
 12. The systemof claim 11, wherein the one or more processors are further configuredto cause the system to update one or more of the simulation valuesacross the simulation flow field by utilizing the dynamic-simulationfunction to spatially translate a simulation value for a spatiallocation at an initial time step to a neighboring spatial location at anext time step following the initial time step.
 13. The system of claim11, wherein the one or more processors are further configured to causethe system to: identify a pixel with a set of pixel color valuescorresponding to a simulation value for a spatial location at an initialtime step; spatially translate, at a next time step following theinitial time step, a different simulation value to the spatial locationfrom a neighboring spatial location in accordance with thedynamic-simulation function; and update, at the next time step, thepixel to include a different set of pixel color values corresponding tothe different simulation value spatially translated to the spatiallocation from the neighboring spatial location.
 14. The system of claim11, wherein the one or more processors are further configured to causethe system to update one or more of the simulation values across thesimulation flow field by utilizing the dynamic-simulation function todetermine a direction and an amount of a simulation value for a spatiallocation to spatially translate away from the spatial location at a nexttime step following an initial time step.
 15. The system of claim 11,wherein the one or more processors are further configured to cause thesystem to: generate a mask comprising an additional digital image thatoverlays the digital image; dynamically modify, within the graphicaluser interface, at least a portion of the mask over time to selectivelyreveal one or more portions of the digital image by simulating thedynamical system within the mask according to the dynamic-simulationfunction and one or more additional user inputs selecting one or moreportions of the mask; and based on revealing the one or more portions ofthe digital image, simultaneously hide one or more correspondingportions of the additional digital image to dynamically generate acomposite image of both the digital image and the additional digitalimage.
 16. The system of claim 11, wherein the one or more processorsare further configured to cause the system to detect, via the graphicaluser interface, additional user input to alter the simulation of thedynamical system within the digital image by modifying one or moresimulation values across the simulation flow field.
 17. The system ofclaim 11, wherein the one or more processors are further configured tocause the system to: determine, for a time step, at least one of densityvalues, velocity values, temperature values, viscosity values, vorticityvalues, intensity values, concentration values, opacity values, orrate-of-diffusion values corresponding to the dynamical system for aphysical effect or property of a physical matter utilizing thedynamic-simulation function; generate the simulation flow fieldcomprising at least one of the density values, the velocity values, thetemperature values, the viscosity values, the vorticity values, theintensity values, the concentration values, the opacity values, or therate-of-diffusion values for the physical effect or property of thephysical matter at the spatial locations associated with the digitalimage; and render, for the time step, updated pixel color values for thedigital image to simulate the dynamical system for the physical effector property of the physical matter according to at least one of thedensity values, the velocity values, the temperature values, theviscosity values, the vorticity values, the intensity values, theconcentration values, or the rate-of-diffusion values within thesimulation flow field based on the dynamic-simulation function.
 18. Thesystem of claim 11, wherein the one or more processors are furtherconfigured to cause the system to: prior to detecting a selection of thedynamic image filter, apply a parameterized-static-filter to generate astatic version of the digital image; and based on detecting the userinput to select the dynamic image filter, dynamically modify pixel colorvalues for one or more pixels of the static version of the digital imageto simulate the dynamical system over time.
 19. A computer-implementedmethod comprising: providing, for display within a graphical userinterface, a digital image and a set of dynamic image filters for userselection; detecting, via the graphical user interface, a user input toselect a dynamic image filter from the set of dynamic image filters tosimulate, within the digital image, a dynamical system; based ondetecting the user input to select the dynamic image filter: identify adynamic-simulation function corresponding to the dynamical system; anddynamically modify, within the graphical user interface, at least aportion of the digital image over time to simulate the dynamical systemwithin the digital image according to the dynamic-simulation function;and detecting, via the graphical user interface, additional user inputto capture an image frame of a modified version of the digital image ata particular time during simulation of the dynamical system.
 20. Thecomputer-implemented method of claim 19, further comprising detecting anadditional user input to select a portion of the digital image at whichto apply the dynamic image filter.